This document will describe, for the system manager, the various
components of a TSX-Online system. This is not a "how-to" discussion
on running the software,
it is geared towards someone who wants to dig a little deeper and
understand the the functional aspects of TSX-Online.
This discussion assumes a working understanding of TSX-32.
If you are completely new to TSX-32 you may wish to review the key
concepts and practices of TSX-32 first.
It is divided into several areas of focus:
Key Directories and Files
There are three important directories which come into play with a
- The SY: directory, which contains some programs and data files,
particularly related to networking.
- The BBS: directory, which contains the custom versions of menus
and programs, as well as logs.
- The BBSBIN: directory, which contains the executables and default,
shipping versions of menus and programs.
In general, you modify a system by taking a default menu or program from
the BBSBIN: area, copying it to the BBS: area, and then make the
modifications. New programs and menus go directly into the BBS: area.
When an upgrade or new system is installed the files
in BBSBIN: are overwritten, while the files in BBS: are left untouched.
In general, think of the BBSBIN: area as reserved for TSX-Online
programs and menus and the BBS: area as the area for your custom programs
When you install TSX-Online you'll select the directory names which
correspond to the logical names BBS: and BBSBIN:.
There are many important files and programs associated with the TSX-Online
system. Here are the more important ones:
- SY:STARTBBS.CMD -- This command file is executed at start up to
start various detached jobs used by TSX-Online. It is invoked as a result
of setting DOBBS = 1 in the TSX32.GEN file.
- BBSBIN:TPR.EXP -- The big Kahuna, the TSX-Online engine.
This program is the one running when someone has a TSX-Online session active.
This is also the program which is used to interpret compiled TPL programs.
This is not a coincidence; in an important way TSX-Online
is a TPL application, although there is extensive use of built-in
and special functions specific to the TSX-Online system.
- BBSBIN:TPL.EXP -- The TPL language compiler. This accepts as input
an ascii file with TPL source statements and outputs a ".TPR" file. The
TPR program is used to execute the ".TPR" file.
- BBSBIN:MENU.EXP -- The menu compiler. The menu compiler reads ASCII
files with menu definitions in them and outputs ".TMU" files. These are
processed as part of TSX-Online execution.
- SYSOP.EXP -- The SYSOP program, used to perform user and system management.
Creates and modfy users, configure and monitor the system.
- SY:BBS.CMD -- This command procedure invokes BBSBIN:LOGON.TPR
when the user connects. This is the beginning of processing for the
- BBSBIN:LOGON.TPL -- Entry point into TSX-Online for users who go
through logon processing. Unless this is overridden,
a user starts TSX-Online with the command
"RUN BBSBIN:TPR BBSBIN:LOGON".
- BBSBIN:BBS.MNU -- Topmost menu as shipped for TSX-Online,
called from "LOGON.TPR". This presents the basic options for E-mail,
newsgroup processing, and the like.
How TSX-Online starts up
An important TSX-32 concept is the concept of the startup command procedure
for a terminal line. This is a command procedure which is started when
a job starts on a line. In a non TSX-Online system this will normally
launch a command procedure which will run the logon program.
If a startup command procedure is not specified in the TSX32.GEN file
then the system will look for SY:START.CMD if the system is not
for TSX-Online and SY:BBS.CMD if the system is licensed for
When a user connects to a TSX-Online system the command procedure
SY:BBS.CMD runs. After some housekeeping it runs
the BBSBIN:LOGON.TPR program. After collecting and verifying
username and password
information it checks to see if there is a unique startup command procedure
for the user. If there isn't it checks for BBS:BBS.TMU. If that fails,
it checks for BBSBIN:BBS.TMU, which is shipped as the default first menu.
The graphical client starts up in a slightly different way. It establishes
a socket connection with TPR on the host system.
TPR receives username and password information from the graphical client
and performs the login sequence. If this succeeds it checks for a user
specific command procedure, then BBS:BBS.TMU, then BBSBIN:BBS.TMU.
Execution Framework: Menus, TPL programs, and built in functions
The key conceptual execution framework in TSX-Online involves
menus, TPL programs, and the use of built-in functions.
The program "TPR.EXP" is the TSX-Online "engine", and is the program
actually running when a TSX-Online user is logged on. TPR is not active
during a pass-through PPP session; in that case there is no job active
for the user.
As TSX-Online is designed to be configurable, TPR uses two kinds of
entities to tailor the user interface; TPL programs and Menus.
While there are many detached jobs, programs, files, and procedures needed to
actually run a TSX-Online system,
the user interface to TSX-Online is composed of TPL programs and Menus.
The TPL language is a programming language. Because it is an interpreted
language it can easily make use of built in functions which are essentially
hooks into TPR, which also acts as the TSX-Online engine. Menus
are developed as ASCII files and compiled with the MENU program. The output
of the MENU program is something that TPR knows how to read and process.
There is a built in TPL function called menu() which takes as
an argument a menu to invoke. Thus, from a TPL program you can
call, as if it were a subroutine, a menu which was compiled via the
Menus associate actions with keystrokes. One action that a menu can
perform is to call another menu. However, the real power of the TSX-Online
system lies in the fact that a menu can call a TPL program, via the
action tpr .
Thus, the TSX-Online user interface consists of a TPL program (LOGON)
which invokes a Menu (BBS:BBS.TMU) which may then call other menus,
which may call TPL programs, and TPL programs and Menus both make
use of extensive built in functions for accessing e-mail, file
libraries, and so forth.
Associated with a user are a set of privileges. There are two kinds of
privileges, one which are a set of individual privilege "bits", in
which each is isolated from the other and represent on/off switches,
and another which is a privilege level, in which a higher number
represents "more" privilege. Most aspects of the TSX-Online system
are accessed by checking for user privileges.
TSX-Online makes extensive use of detached processes to perform
its functions. Detached processes, or jobs, in the TSX-32 operating system
are programs do not run on a terminal but instead run in the background.
The jobs generate either event logs or log files or both, so that
they can be monitored.
There are two classes of
detached jobs, those that run all the time and those that are invoked
by the NETSERVE program as needed.
They ones which run all the time are kept in
a suspended state until they are needed so that they use minimal system
The distinctions between the two are partly based
on functional requirements and partly based on historical tendencies.
Not all jobs will be required in all configurations. In particular,
networking and Internet connectivity increase the number of jobs.
We will discuss a fully configured system with Internet connectivity.
The jobs that run all the time are those that show up with you do the
SY command. If they are supposed to be running and they are not running
then its generally going to cause problems.
Here is a sample SY command which shows the permanently
running jobs for a fully configured system.
The output has been trimmed to just show important
Job ID Terminal State Program Process name
------ -------- ----- -------- ------------
2 Detached WAIT NETSERVE Net Server
3 Detached SPND PTYSERV PTY Server
4 Detached SPND HTTPD WWW Server
5 Detached WAIT SMTPS SMTP Server
6 Detached SPND WHOSERVE BBS:Whoserve
7 Detached SPND NAMESERV BBS:Nameserv
8 Detached SPND SESERVER BBS:Schedule
9 Detached SPND CHSERVER BBS:Chat
10 Detached WAIT NAMED Domain Name
- SY:NETSERVE.EXP -- The NETSERVE program is the granddaddy detached
job and the most important detached job for networked systems.
It is required when there are networked systems
even if Internet connectivity isn't necessary. Its function is to launch
other detached jobs to service network requests. The NETSERVE program
receives requests for TELNET and FTP connections and starts their servers.
It also processes TSX-32 Network Device Access and SET HOST requests.
It is configured via the files SY:SERVICES.NET and SY:INETD.NET,
which tell it which ports to listen on and the programs to launch
when requests are received on those ports.
This writes to an event log called NETSERVE.
- SY:FTPD.EXP -- This is the server component of FTP, started by
the NETSERVE program when an FTP connection is requested. It writes
to event log called FTPD.
- SY:TSXTLD.EXP -- This is the server component of TELNET, invoked
by the NETSERVE program when a TELNET connection is requested. The
operating system writes to the TNSERVER event log to record TELNET
connections. It is short lived; it creates a "TTN" device and then
goes away, leaving the job running.
Jobs with terminals denoted "TTN" are either TELNET
sessions or the result of TSX-32 SET HOST commands.
- BBSBIN:NAMESERV.EXP -- The name server is critical to TSX-Online
operation. It handles requests by the TSX-Online system to set and
retrieve information about users such as passwords and privileges.
If the name server isn't running the TSX-Online system will not
function. This program is launched from SY:STARTBBS.CMD, which executes
at system startup.
It writes to an event log called NAMESERV.
- BBSBIN:WHOSERVE.EXP -- The "who" server is used on networked systems
and on systems where the TSX Graphical Client is in use. It maintains
information about who is logged on across systems.
This program is launched from SY:STARTBBS.CMD, which executes
at system startup. It writes to an event log called WHOSERVE.
On networked systems or systems with the graphical client this
program must be running or TSX-Online will not function.
- BBSBIN:SESERVER.EXP -- The Schedule Server has the responsibility
of starting off maintenence tasks which perform functions such as processing
mail or Usenet newsgroups on a timed basis.
As shipped, TSX-Online runs various jobs at different intervals.
This program is started from SY:STARTBBS.CMD.
The scheduling capability (done from within
SYSOP) is quite useful not just for TSX-Online but for the sysops.
Its ability to start a command file at specified intervals by
simply filling out a form means that its convenient and easy to design
tasks which need to occur on a regular, or irregular, basis.
This writes to the SCHEDULE event log.
The system can partially function if this isn't running, although
mail will not be delivered and other functions such as newsgroup
updating will not occur.
- BBSBIN:CHSERVER.EXP -- The Chat Server is used to coordinate
access to various chat rooms for TSX-Online users. It writes to the
CHAT event log. If this program isn't running chat will not function,
although other TSX-Online operations can proceed.
This program is started from SY:STARTBBS.CMD.
- SY:PTYSERVE.TPR -- The PTY Server is used to services "Psuedo" Terminals
and is involved with network and Internet connectivity.
It is launched from SY:STARTPTY.CMD, which is executed during system
startup as a result of the TSGEN parameter DOPTY being set to 1.
It initiates and manages
on demand PPP connections as well as dial up connections to an ISP.
The functionality of the PTY server is contained within TPR program,
so this isn't really a functioning TPL program. The PTYSERVE.TPL
program simply calls the built-in ptyserv() function.
If this program isn't running dial up PPP will not work, and if
your connection to your Internet provider is through a dial up connection
that will also not work.
- SY:HTTPD.EXP -- The Web server handles requests to read web pages.
It is started from SY:STARTWEB.CMD, which gets executed if the DOHTTPD
is set to 1 in the TSX32.GEN file. This reads from a configuration
file called "SY:HTTPD.CON". It creates a log file called "mmmddyy.log"
which contains records for each hit. At midnight each day a new one
is created. There is also a file called "SY:HTTPD.HIT" which contains
hit counts on all referenced pages. It runs all the time and spawns
child processes to handle CGI scripts and complex requests.
and writes to two event logs, HTTPD and HTTPRULE.
The latter is useful in diagnosing problems related to pass/fail rules.
If this isn't running requests for web pages will fail, but other
system operations should be unaffected.
- SY:NAMED.EXP -- The Domain Name Server translates requests for
domain names such as "sandh.com" into IP addresses. It runs all the time
and is launched from SY:STARTDNS.CMD, which in turn is executed during
startup if the TSGEN paramater DODNS = 1. It writes to an event log
called NAMED and NAMEDDB. It reads from control files BBS:NAMED.BOO
and BBS:DB.NAM and BBS:DB.NUM.
Programs running under TSX-32 will consult the
NAMED program for translation requests if there is a 'nameserver' record
which contains the IP address of the local computer in SY:RESOLV.CON.
Client programs running under Windows,
such as Netscape or the TSX-32 Graphical Client, consult
the NAMED program after they are told of the DNS address.
Configuration of the NAMED program can be quite complex. There is a utility
called SY:DNSMAKE.EXP which can assist in some of the more common
functions. The O'Reilly book "DNS and Bind" is a good reference for
invoked by netserve
tpr, for graphical client
pop, for pop mail
nntp, for newsgroup access
invoked by the schedule server
Tossers for processing outgoing items
Event logs and log files