home *** CD-ROM | disk | FTP | other *** search
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- TCB [Today's Callers Bulletin] v2.01
- Robert Bingleman / February 21st, 1993
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- ┌───────────────────────────────────────────────────────┐
- │ USR 16.8 Dual Standard / ZyXel 16.8 │
- │ Ridgeway _____.-----._____ Ontario │
- │ ___----~~~~~~. ... ..... ... .~~~~~~----___ │
- │ ================================================= │
- │ ~~~-----......._____________.......-----~~~ │
- │ (____) \ | / (____) │
- │ || _/ | \_ || │
- │ \\_______--~ //~~~\\ ~--_______// │
- │ SysOp `~~~~---__ \\___// __---~~~~' FidoNet │
- │ Shawn Mazzuto ~~-_______-~~ 1:247/301 │
- │ │
- │ Phone: (416)/894-2503 [Zyxel] or (416)/894-3012 [DS]. │
- ├───────────────────────────────────────────────────────┤
- │ ∙ Online Games ∙ 1700+ Files ∙ FidoNet Echomail │
- └───────────────────────────────────────────────────────┘
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- [TCB was written for Shawn Mazzuto, sysop of The Prime Directive.]
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Introduction
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- I hadn't seen a "today's callers" program as configurable (or even remotely as
- confusing) as this one, so I wrote one. This is it.
-
- The best way to get TCB up and running is to simply set the necessary paths
- (via command-line parameters or directly in the supplied TCB-201.CNF) and
- create a bulletin. Take a look at the results, decide what you don't like,
- and then look in this DOC file (or in the 132-column REF file, which you
- might like to print out) to find out how you can go about changing it.
-
- Alternate configuration examples are provided in the SAMPLES directory, as a
- means of assisting sysops in deducing anything that's not properly explained
- -- in other words, everything. These files do not represent the full extent
- of TCB's options: they represent the extent of my imagination and patience,
- the sum of which would be approximately nil at this point.
-
- Generally speaking, the way you'll use TCB is to run it between callers,
- so that it can create a fresh, up-to-date bulletin for the next caller to
- look at (or not). This could be done by inserting it somewhere in the batch
- file you use to run SuperBBS. Under a single-node system, this is VERY
- simple.
-
- A very rudimentary example:
-
- [BBS Batch File] [TCB-201.CNF excerpt]
- :LOOP MULTINODE = FALSE
- TCB-201 LOGFILE = SYSTEM.LOG
- BBS
- GOTO LOOP
-
- Under multi-node, it becomes a bit more whacked, because of file-sharing
- problems that I've neither the inclination or information to resolve. If
- you're not running a multi-node system, skip this bit, because it will just
- confuse and frighten you.
-
- Another rudimentary example:
-
- [Node 1 batch] [Node 2 batch] [Node 3 batch]
- :LOOP :LOOP ...
- TCB-201 TCB-201
- BBS BBS
- COPY NODE01.LOG NODE01.TCB COPY NODE02.LOG NODE02.TCB
- GOTO LOOP GOTO LOOP
-
- [TCB-201.CNF excerpt]
- MULTINODE = TRUE
- LOGFILE = NODE01.TCB
- LOGFILE = NODE02.TCB
- ...
-
- The point here is that TCB never touches a logfile that might be open; it's
- always working with benign copies. The filenames you use need not be the same
- as in the above examples, of course; whatever suits you, so long as you use
- the same general idea. If you don't, you'll find your 'tasker halted with a
- share violation; follow this prescription and you'll be okay.
-
- After you get this down, you've got to create a menu option (use "Display
- ANS/ASC file") to allow users to display the bulletin(s). Relatively simple.
-
- The worst thing about this program, apart from the incomprehensible config
- file (read on), is the speed -- or lack thereof. Using multiple large log
- files (say, around 2 or 3 100K+ logs), TCB can actually take several seconds
- to create bulletins. As I've said previously, I want to do something about
- this, but I don't have the development software to do it. I had a friend of
- mine who owns Turbo C++ compile this version for me (the pain!), but it's not
- really much better than MSC; I didn't expect that it would be. What's really
- required here is some thoughtful re-coding of key routines in assembly, but,
- unfortunately, I don't have an assembler (and I'm NOT going to fight with the
- obnoxious inline assembler). Please let me know if the speed is a problem for
- you, and I'll move this a bit higher up the priority queue.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- This DOC file...
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- ...has become a bit more comprehensive since the first release. The bulk of
- the reference material has been removed from the default config file and is
- now contained in the easily printable 132 column TCB-201.REF file. I think
- you'll find, though, that reading this document is your best hope if you've
- not yet been introduced to TCB; this runs contrary to the first version, in
- which the DOC file was a pseudo-humourous, ten minute knock-off. This file,
- while still failing to contain any actual humour, does at least contain my
- best attempt to date at explaining the available options.
-
- Before we get into that, though, there's one topic we have to deal with...
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- The TCB Command Line...
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Available parameters are /CNF=<name>, /LOG=<name>, /ANS=<name>, /ASC=<name>.
- The /CNF= switch specifies a configuration file to use; the /LOG=, /ANS=,
- and /ASC= parameters override, respectively, the LOGNAME, TCBANSI, and
- TCBASCII path/filenames provided in the configuration file. If that's too
- obscure for you, you might want to bail out right about now.
-
- If no /CNF= switch is present, TCB looks for the file TCB-201.CNF in the same
- directory as the executable file (NOT the current directory). I included this
- as a "feature", and although I later realized that it's probably just going to
- confuse and frighten prospective users, I left it in.
-
- If your configuration file is saved as TCB-201.CNF in the proper diretory,
- and you have the correct path/filenames set inside it, you obviously don't
- need to specify ANY command line parameters. Good deal, don't you think?
-
- If you have MULTINODE set to FALSE/NO, specifying a logfile via /LOG= will
- override any LOGNAME definitions in the configuration file. Otherwise, the
- name specified on the command line will be prepended (?!) to the list of
- logfiles to process.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Pointless
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- The configuration (that's physical, not logical) of TCB can be thought of
- as being divided into three separate sections:
-
- » Operating parameters (everything at the start of the CNF file)
- » Names to leave out of the logfile (the $IGNORE string block)
- » String definitions (the $LABEL, $LEVEL, $SPEED, and $EVENT string blocks)
- » Customized fields (the $CUSTOM string block)
-
- The operating parameters should be worried over the most (screw them up, and
- you're up the proverbial creek of shit), changing the string definitions can
- help to pretty things up a bit, and customized fields are just something to
- amuse yourself with on a rainy (or, if you're really bad off, sunny) day.
-
- Really, there are only a few specific things that you can't configure; one is
- my name (a shame, I know), and the others... well, they escape me. I'm sure
- you'll run into them soon enough.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Creatively Cryptic Colour Codes...
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Colour is a simple concept and, as such, is represented in an abstract and
- confusing manner in the TCB configuration file. To further obfuscate the
- subject (and I fully intend to), one colour isn't really a colour at all.
-
- Any time you're required or wish to supply TCB with a colour, you'll do so
- by specifying a colour "pair": two characters, the first of which represents
- the background colour, and the second which, not surprisingly, represents
- the foreground.
-
- Background Values Foreground Values
- -------------------------------------------------------------------------
- 0 Black 8 Black, flashing | 0 Black 8 Dark Grey
- 1 Red 9 Red, flashing | 1 Red 9 Light Red
- 2 Green A Green, flashing | 2 Green A Light Green
- 3 Brown B Brown, flashing | 3 Brown B Yellow
- 4 Blue C Blue, flashing | 4 Blue C Light Blue
- 5 Purple D Purple, flashing | 5 Purple D Light Purple
- 6 Cyan E Cyan, flashing | 6 Cyan E Light Cyan
- 7 Lt. Grey F Lt. Grey, flashing | 7 Light Grey F White
- -------------------------------------------------------------------------
-
- Say, for the sake of argument, that you wanted the border around the bulletin
- to be flashing light purple on brown. Look in the first box; in this case,
- brown is 'B', not '3', because we want the colour to flash. In the second
- box, you'll see that light purple is 'D'. The code for flashing purple on
- brown is 'BD'.
-
- These colour codes are also valid in quote-enclosed string definitions, with
- the exception of strings in the $IGNORE block; in such cases, they must be
- preceded by an '@' character. The '@' character is used to indicate that a
- special code is embedded in the string. There are only two other cases where
- you'll use the '@': first, if you wish to have a quotation mark '"' in a quote-
- enclosed string, you use @", so that the parser doesn't see that quotation
- mark as meaning "end of definition", and second, if you want a real '@' symbol
- to appear in your display string, you must use @@, for reasons that should be,
- but probably aren't, quite obvious.
-
- You might want to read that last sentence (all 6 lines of it) again.
-
- Finally, the colour code '80' is a special case; the string parser in TCB
- interprets this code as "don't write any ANSI codes at all." The reason
- for this may or may not occur to you as you struggle with TCB; if not, don't
- worry, because you're not missing anything particularly good. If anyone has
- a particular use for the colour '80' (flashing black on a black background),
- drop me a line and I'll arrange to have you brutally murdered.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Some options you'd damn well better understand!
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- These options should appear at the beginning of the configuration file, before
- any of the string definitions (see below -- but not right now). Although most
- of these options are position-insensitive (that is, nobody, especially myself,
- gives a hoot in hell what order they're in), a couple are a bit testy, and
- you'll be doing yourself a favour if you just leave them in the order they're
- shown here (and in the example configurations).
-
- The format for these settings is, generally...
-
- [LABEL] = <something>
-
- ... where [LABEL] is the name of the configuration option, and <something> is
- either a string, a flag (YES/NO), a filename, or a numeric value, depending
- on the option. Note that YES/NO settings can also be specified as TRUE/FALSE;
- good news for those with a Boolean fixation.
-
- Label Definition
- -------------------------------------------------------------------------
- SYSOPNAME A quote-enclosed string that's displayed at the top of the
- bulletin, provided that the bulletin is wide enough.
- For example, SYSOPNAME="Shawn Mazzuto".
- There is no default for this option.
-
- BBSNAME Same concept and use as SYSOPNAME.
- Ex. BBSNAME="The Prime Directive".
- Def. -- NO DEFAULT --
-
- MULTINODE Should equal YES if you wish TCB to create your bulletin(s)
- using multiple SuperBBS logfiles, such as might be necessary
- on a system that has multiple nodes.
- Ex. MULTINODE=YES
- Def. MULTINODE=NO
-
- LOGNAME The filename of a SuperBBS system log file. If MULTINODE is
- set to YES, you can have multiple LOGNAME= statements; if not,
- such an occurance will cause an error. The command line
- option /LOG=<name> overrides this setting in a non-MULTINODE
- configuration; otherwise, the logfile specified by /LOG=<name>
- is used IN ADDITION TO the logfiles specified in the CNF file.
- Ex. LOGNAME=H:\SBBS\SYSTEM.LOG
- Def. SYSTEM.LOG, in the same directory as TCB-201.EXE.
-
- TCBANSI The filename of the ANSI bulletin that TCB creates; if you
- don't need an ANSI bulletin, use NONE for the name, and one
- simply won't be created for you.
- Ex. TCBANSI=H:\SBBS\TEXT\LASTCALL.ANS
- Def. TCB.ANS, in the current directory.
-
- TCBASCII The filename of the ASCII bulletin that TCB creates; same deal
- as above with the NONE bit.
- Ex. TCBASCII=H:\SBBS\TEXT\LASTCALL.ASC
- Def. TCB.ASC, in the current directory.
-
- BLANKLOG Should equal YES if you wish TCB to create a bulletin even if
- no callers were found to be displayed; in such a case, the
- bulletin(s) will simply say, "No Callers Found." Set to NO,
- no bulletin(s) will be created in this circumstance.
- Def. BLANKLOG=NO
-
- CALLCOUNT The maximum number of previous callers to display; if you'd
- like to display all callers in the specified logfile(s), use
- the value 0.
- Ex. CALLCOUNT=21
- Def. CALLCOUNT=0 (display all callers)
-
- CALLDATE Set to YES if only today's callers should be displayed; NO will
- cause all callers in the logfile(s) to be displayed.
- Def. CALLDATE=NO (display all callers)
-
- SECURITY The maximum security level to display; any callers with security
- levels up to and including this number will be displayed.
- Ex. SECURITY=500
- Def. SECURITY=32767
-
- LOCAL Should equal YES if local log-ons should be displayed in the
- bulletin; note that this does not override SECURITY.
- Def. LOCAL=NO
-
- HEIGHT The height of each 'page' of the bulletin, including header/
- footer/totals; basically, this is the desired display size.
- A value of 0 indicates that the bulletin(s) should not be
- broken into pages.
- Ex. HEIGHT=49
- Def. HEIGHT=24
-
- LABELS Set to YES if "labels" should appear above each column. The
- actual configurable strings are defined later in the CNF file;
- this flag simply dictates if they'll ever be seen.
- Def. LABELS=NO
-
- TOTALS Set to YES if numeric-value (counter) columns should be summed
- in a "totals" row at the bottom of each page; non-numeric
- fields are left blank. If set to NO, this line will not appear.
- Def. TOTALS=NO
-
- FANCY Set to YES if the ANSI bulletin file (provided that there is
- one) should use cursor-positioning and line-deleting codes to
- make the bulletin look nicer and reduce transmission time. If
- set to NO, the screen is cleared between each page (<esc>2J).
- Def. FANCY=YES
-
- IGNOREQWK Set to YES if file-transfers with the extensions "QWK" or "REP"
- should be ignored (ie. not counted or displayed).
- Def. IGNOREQWK=NO
-
- OUTSIDEC A two-digit colour code (see above, for a change) that defines
- the colour of the outside border around the bulletin.
- Def. OUTSIDEC=04 (black bg/dark blue fg)
-
- INSIDEC Same as above, but pertaining to the inside frame characters.
- Def. INSIDEC=04 (black bg/dark blue fg)
-
- OUTSIDE Twelve (not ten, twelve) characters that are given to master-
- craftspersons (izzat right?) to built a sturdy frame around your
- bulletin(s). The string is quote-enclosed, and can include
- colour-control strings ('@xx').
- Def. OUTSIDE="╔═╤╗╚═╧╝║╟║╟║║╢║╢║"
-
- INSIDE Three characters that are used by professional interior
- decorators to design the "divisions" between columns inside the
- bulletin. Quote-enclosed, can include colour codes, etc.
- Def. INSIDE="─┼─┼│││"
-
- HEADERC Colour code used for the two-line title bar. This new item
- resolves a cosmetic problem with the first version of TCB.
- Def. HEADERC=4E (blue bg/lt. cyan fg)
-
- LABELC Colour code used for the labels above each column, if you've
- got them enabled.
- Def. LABELC=0F
-
- FOOTERC Colour code for the "Press [ENTER]" (or whatever it was I said
- in it) footer that appears at the bottom of each page.
- Def. FOOTERC=4E (blue bg/lt. cyan fg)
-
- LASTULC Colour code used for the "Last Transfer" Field Type; the colour
- in the CONFIG line (below again) is used for downloads, while
- this colour is used for uploads.
- Def. Use same colour as downloads.
-
- ZEROC Colour code assigned to counter fields with a value of 0. If
- the background portion of this code (the first digit) is '8',
- the background of zero-valued columns is left untouched while
- the foreground changes to the specified colour.
- Def. Use normal field colour from CONFIG line.
-
- CONFIG Defines the order, type, size, justification, and colour of
- the fields that appear in your bulletin(s). See the next
- section for a thick and meaty description.
- Def. -- NO DEFAULT --
-
- RATING The letters A to M, corresponding to the thirteen "special
- events" under Field Type U (uh, look down there again).
- During some (uh, most) calls, more than one "special event"
- will occur, and the RATING line is the means by which you
- define the precedence of the various "special events". If
- you're going to define this string, you MUST include all
- characters from A to M. If you don't want certain "events"
- to appear under ANY circumstances (such as the "Sysop Hung
- up on User" special event), give them a lower precedence
- than the "None" event ('A').
- Def. BLAMCDJIHFGEK
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Welcome to my CONFIG line.
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- TCB is configured using the concept of "fields" (and Field Types), as in a
- database program; these fields display the various parameters & statistics
- related to each call in the logfile(s). Now, there can be a lot of
- information in one call -- far too much to pack into one eighty-column line,
- and inevitably more than any normal person should care about. Accordingly,
- you can select exactly what information is inserted in your bulletins. If
- you're still with me, that's good. Hang in there for just a while longer.
-
- The fields that will be included in your ANSI/ASCII lists are specified by a
- string of values assigned to the CONFIG variable. The format of the CONFIG
- line is as follows:
-
- CONFIG = [<Leading><|Trailing><Field Type><Width><Alignment><Colour>] [...] ...
-
- <Leading> a numeric value, indicating the number of spaces to
- insert before any information in the field. The default
- value is 0 (no leading spaces).
-
- <|Trailing> a numeric value, preceded by a "|" (pipe) character to
- distinguish it from the <Leading> field, indicating the
- number of spaces to leave blank at the end of the field.
- The default is 0 (no trailing spaces).
-
- <Field Type> one of the following letters, used to indicate the type
- of information to be displayed in this column.
-
- A Username
- B Alias
- C LogOn Time [24-hour]
- D LogOn Time [12-hour + a/p]
- E LogOff Time [24-hour]
- F LogOff Time [12-hour + a/p]
- G Date of Call [YY-MM-DD]
- H Duration of Call
- I User Level [Numeric]
- J User Level [Text from $LEVEL block]
- K Number of Downloads
- L Number of Uploads
- M Connect Speed [Numeric]
- N Connect Speed [Text from $SPEED block]
- O Sysop Page Attempts [Numeric]
- P Sysop Page Attempt? ["Yes"/"No"]
- Q Last File Downloaded
- R Last File Uploaded
- S Last File Downloaded OR Uploaded [Last Transfer]
- T Number of Messages Written
- U Special Events [Text from $EVENT block]
- V Caller Number
- W Node Number
- a-z User-configurable [from $CUSTOM block]
-
- <Width> is the number of characters to allot for the field. Any
- excess characters will be truncated; any excess space will
- be filled with either spaces or zeros (see ALIGNMENT).
-
- <Alignment> is L/R/C/Z = Left/Right/Center/padZero. If the text to be
- inserted in the field is LARGER than the WIDTH, this is
- used to determine which side of the text to print from.
- In other words, if the field was four characters wide, but
- the string was, say, eight (for example, "SKINHEAD"), using
- 'L' as your alignment would give you 'SKIN'. Using 'R'
- would give you 'HEAD'. In this case, C and Z are inter-
- preted the same as L.
-
- <Colour> is the colour code for the field. With Field Types J, N,
- U, and Custom Field Types a-z, you might want to use the
- colour code '80' (remember?). This code tells TCB not to
- write any prefix ANSI codes at all; useful in avoiding
- extraneous codes in cases where text strings contain their
- own colour codes.
-
- For example, 2|1A25C1F produces a field that has 2 leading spaces ('2'), one
- trailing space ('|1'), contains the user's name ('A') in a field 25 characters
- wide ('25'). The name is centered ('C') and the field is coloured white on
- red ('1F'). It's hard to believe, I know.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- CONFIG Field Types that require Thoughtful Discussion...
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Only one comes to mind, apart from the custom field types (they're discussed
- below), and that's the Type-U [Special Event] field.
-
- This one exists because there are quite a few (twelve that I've found) events
- that can occur during a call that don't really deserve their own field. For
- example, although it would be nice to see if a user dropped carrier, or a
- fatal system error occurred while a user was on-line, there's no point in
- wasting precious space on fields dedicated to either of these possibilities.
- (To be honest, there's no point in dedicating any drive space to this program
- at all, but then we've already covered that, haven't we?) Therefore, the
- "Special Event" Field Type can be thought of as being a grouping of some of
- the more esoteric event possibilities under one heading.
-
- Actually, there is one "event" that's included here and also has its own
- Field Type (two of its own, even): sysop page. I did this simply so that
- those who use this "special event" field need not waste space by having a
- Type-O or Type-P "Page?" field as well, although you'll probably want to.
-
- Here are the events. Make sure you don't confuse the lettering of these
- events with the lettering of the Field Types; these letters are used only
- in the RATING= configuration item, and in the $EVENT display-string block
- to identify which string belongs to which event.
-
- ID Letter Definition
- -----------------------------------------------------------------------
- A No special event occurred.
- B User paged the sysop.
- C Used entered invalid password.
- D Name not in userfile.
- E Password failure (access denied).
- F New user questionnaire completed.
- G User dropped carrier.
- H Calls-per-day limit exceeded.
- I User inactivity logoff.
- J User's allotted time expired.
- K Fatal system error.
- L Sysop hung up on user [Alt-H].
- M User entered invalid name, then re-entered correct name.
-
- Unlike the Field Types, the A -> M identifiers here are not case sensitive,
- and can be used in lower-case with equal success.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Block of Ignorance
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- New to this version is the capability to specify a bunch of users (up to 256)
- to exclude from the bulletin(s). This is done quite simply:
-
- $IGNORE
- "Robert Bingleman"
- "Price Waterhouse"
- "Your name here"
-
- The '$IGNORE' label tells TCB that the next batch of strings should be
- compared to names found in the logfile and, if found, these entries should
- be skipped entirely. The names must be quote-enclosed, as in the example.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- String Definitions
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- All quote-enclosed strings can be of any reasonable length and can contain
- colour codes (except the $IGNORE block, above) in a format that I won't bother
- mentioning again.
-
- There are limits (such as the number of strings defined, total space allotted
- for all strings of a certain block, and so on), but you probably won't run
- into them. If you do, you'll know it -- believe me.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- String Definitions, part I: The $LABEL Block.
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- These are the strings that show up just under the header, if you have LABELS
- set to YES or TRUE. If you don't put any colours in the strings, they
- default to being the same colour as the data fields they correspond to, which
- will probably be frighteningly ugly. Also, one of these labels (you'll have
- to guess which) is displayed in the "Name" field, assuming you have one, in
- the Totals line, also assuming you have one. It should probably say something
- along the line of "Totals...", but, if you think that the purpose of the
- Totals line is already too obvious, you could use "Sausages...", or some other
- reference that will utterly fail to get a laugh.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- String Definitions, part II: The $SPEED Block.
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- By defining strings in this section and using a Type-N field, you could show
- that a caller's speed was "Zippy", "Annoying", "Putrid", "Hellish", or
- "Drippy" (or whatever the hell you want) instead of the old, informative,
- boring numeric values that we all know. Remember, the strings can be any
- reasonable length, so you could theoretically define 1200-bps callers as
- being "Too Effing Cheap To Buy a Decent Modem."
-
- I really don't know why I did this; if you thought everything up to this
- point was stupid and useless, you must be absolutely speechless right now.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- String Definitions, part III: The $LEVEL Block.
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Okay, this is a bit more useful. When you use a Type-J field, instead of
- displaying the users' levels as numbers, you can define strings here to show
- that the user has "$Paid$", is a "Freeloader" or happens to be the "Sysop"
- (who usually qualifies for both of the former... ha, ha).
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- String Definitions, part IV: The $EVENT Block.
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Strings defined in this block to correspond to Field Type U, as discussed
- above. The events and their corresponding alphabetic labels are enumerated
- (as much as alphabetic labels can be enumerated) above, as well as in the
- TCB-201.REF file, and, more briefly, in #comment lines in the supplied
- TCB-201.CNF configuration file.
-
- If you knew how much I enjoyed doing that, you'd forgive me for it.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- User-Defined Field Types (a - z) : The $CUSTOM Block.
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Here's where you can kludge together your own Field Types for whatever devious
- purposes you might have in mind.
-
- TCB is a simple parser (actually two of them, but don't let it bother you)
- that scans for certain "key" strings in the log file(s), and acts upon what it
- finds. What you're doing in this section is supplying TCB with your own "key
- strings", along with the display strings that will appear in the corresponding
- Field Type depending on whether or not the key string is found. If you don't
- define the "Yes" and "No" display strings, the field will become a counter,
- just like the built-in counters for messages, xfers, etc. In such a case, if
- you have a Totals line, this field will also be summed at the end of each
- "page" of the bulletin, whether you like it or not.
-
- Note that defining no $CUSTOM block will speed up TCB a little bit; I won't
- bother explaining why, but it's good to know in any case.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Other Thoughts...
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- » Be careful with your choice of text editors; if it's a stupid one that
- changes all spaces (even within quotes) to tabs when it can, you're going
- to have a long, strange trip.
-
- » If you're having problems with memory, reduce TCB's file buffer allocation
- by specifying '_BUFFER = xxxx' in the configuration file, where xxxx is
- a number less than 5120 (the default value).
-
- » Conversely, if you have tons of memory free, you might be able to speed
- TCB up a bit by increasing this same value beyond 5120.
-
- » The output file names can be any valid DOS device, including CON and PRN
- (or LPTx). If you had a need, you could make up a config file that had
- a very decent width (ie. many fields) and send the ASCII version directly
- to a printer that you've put in "compressed" mode. The ASCII file has a
- Ctrl-L (form feed, also used for clearing the screen) at the beginning of
- each "screen", so you could also set the height of the list to the height
- of your printer's page [66 lines is normal for dot-matrix].
-
- » One reason you'd want to change the characters used to form the "frame"
- around and within the bulletin, apart from cosmetic, is so that you could
- create pure ASCII lists (ie. using no extended characters) for non-PC
- callers.
-
- » You could create a config file that shows who's been playing online games.
- Use the name of the EXE/COM/BAT files as your "key strings" in as many
- Custom Fields as you have games, and have as the CONFIG string only the
- user's name (or alias, or whatever) and the Custom Fields that you've
- just defined. For example:
-
- (Custom Field definition, in $CUSTOM block):
- a = "TW2002.BAT" "@0FYes" "@07No"
- b = "LEMONADE.BAT" "@0FYes" "@07No"
-
- (CONFIG string definition, in main block):
- CONFIG = 1A20L0F a3R80 b3R80 [...]
-
- » Another use for the Custom Fields is obvious enough: there's a SuperBBS
- menu option that allows you to write a string directly into the log file.
- Using this idea, you could have pretty much anything show up in your
- bulletin; for example, you could have a menu option, visible to all of
- your users, that was displayed in your menu as something along the lines
- of "Format Hard Disk C:". Well, if you have that menu option write a
- certain string to the logfile, you could check for it using a Custom Field,
- and you'll soon find out which of your users have it in for you. If you
- make such a menu option and actually have it result in the formatting
- of a hard drive, well, you're too stupid to have any friends anyway.
-
- » If you only want a "Y" or "N" for your chat field (presuming you have one),
- simply set the width of the field to 1 and use 'L' alignment. This way,
- only the first character of the hard-coded "Yes" and "No" strings will
- appear, giving you "Y" or "N". Damn, am I clever or what?
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Planned upgrades...
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- Hmm. Well, as I've said, I don't really want to waste more time on this
- program than is absolutely necessary, but I'm open to suggestions. There
- are three things that I can forsee that would cause me to go back to work:
-
- 1. Someone writes to say that they still can't extract the information from
- the logfiles that they want to. This will likely cause me to implement
- the $TEMPLATE section that I was contemplating including in this version.
-
- 2. The SuperBBS guys get off their butts and include AVATAR support, at which
- time I'll gladly add an AVATAR-compatible bulletin module.
-
- 3. I get my hands on a decent assembler, and, as I've said, I'll do a re-write
- of some key routines and speed it up considerably.
-
-
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
- Registration?
- ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
-
- <A serious bit of spleen-venting.>
-
- It's completely free. Anyone who wants money for simple utilities should be
- fed olive loaf until they puke. Seriously, if you need money, get a job, as
- I had to do. Downloading lame 200K+ Windows utilities written in Visual Basic
- is annoying and costly enough; asking $30+ for them (and creating "shareware
- reminder" screens that are about six thousand times more complex than the
- actual program) is beyond my comprehension. Of course, these bloated gadgets
- receive glowing praise in garbage magazines like Compute; not too surprising,
- really, considering:
-
- 1. A commercial program with a price of $200 is considered "extremely
- affordable" by these toe-sucking hermaphrodites. I hardly think that
- the spud-buffing reviewers who receive free copies of these programs
- are qualified to make any judgements concerning "affordability".
-
- 2. The aforementioned huge-Windows-utility-writing slugs would give their
- left nuts to have their cheesy-hunk-of-walrus-snot programs mentioned
- in a kool rag such as Compute, so I'd be very surprised if any of the
- so-called reviewers ever actually PAY for the shareware they "review".
-
- 3. A fairly recent article has nearly every contributing editor proudly
- proclaiming that he uses BASIC exclusively; one slobbering moron
- confides that he's switched from GW-Basic to QuickBasic because "[he]
- wants to write shareware", and therefore "[needs] a compiled language."
- I have several years' painful experience with C and assembly on various
- systems, and I couldn't get a job painting Bill Gates's house; this wad
- of organic navel-lint not only makes good money writing idiotic articles
- for a popular magazine, but also asks for (and undoubtedly receives) big
- bucks from computer novices who think this dork is a huge celebrity and
- get warm and moist over the idea that he's actually going to read something
- of theirs (even if it's only their signature on a personal check).
-
- Of course, I'm a bit confused about one thing; most of these knuckle-walkers
- would have a hard time running Windows 1.0 on their CGA-equipped Osborne
- portables, even with the wobbly 16K Sinclair memory expansion and six eight-
- inch 180-K floppies they've added (using hot tips from the latest issue of
- Creative Computing, no doubt).
-
-
- Whew.
-
- <-30->
-
- If you've got something to say to me, you might drop me a line (via netmail
- @ 1:247/301 or on Compu$erve as the ever-popular 73707,533). Judging by the
- volume of mail I've received in the past four months, I'd get more letters if
- I left a message in the International Teen conference and told the pizza-faced
- adolescents that I'm forty-six, ride a fiery orange moped, smell like a bowl
- of rotten bean-dip, and have my nose- and ear-hair waxed and braided through
- the blistered gluteals of a screaming gibbon.
-
- So, for the sake of my own amusement, I'm welcoming any abuse that you'd like
- to send my way. If you're having a rotten life, drop me a line and tell me
- that you think I'm an arrogant bastard and that I should go and get stuffed as
- soon and as freqently as possible. Feel free to express yourself using the
- means of communication you know best.
-
- 10 LET A$="COMPUTE"
- 20 LET B$="IS A RAD MAGAZINE BRO DUDEZ!!!!!!!"
- 30 PRINT A$;" ";B$;" ";
- 40 GOTO 10
- 50 STOP
-
- Ciào ciào, bambinos.
-
-
- -- Robert Bingleman, February 21st, 1993.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- * Note:
-