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 TSX-Online system

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 and menus.

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:

Key Concepts

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 licensed for TSX-Online and SY:BBS.CMD if the system is licensed for TSX-Online.

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 MENU program.

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.

User Privileges

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.

Detached processes

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 resources.

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 information.

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