Digiboard C/X Concentrator Configuration

All C/X concentrators must, always, be informed of their configuration in order to operate correctly.  In this context, the term "configuration" means "information about how many boxes are connected to each line, about how the first box on each chain is connected to the board, and how any subsequent boxes along the chain are connected to each other".

This configuration information is always provided to the card by the LHDBLOAD program when the system boots.

Installations Without Modems Between Modules

In most installations all of the "modules" (8 or 16 port external boxes that you plug serial devices into) are local to the site and are simply daisy chained together with cables.  In this case, all LHDBLOAD needs for you to do is tell it HOW MANY boxes there are on the two "chains".  These chains correspond to the connectors on the business end of the card labelled "line1" and "line2".  To be consistent these are the same terms you use in the TSX32.GEN file to describe this common configuration:


DEVICE=TT/CONTROLLER=D/HANDDEF=LHDB16I/LINE1=2/LINE2=4/TYPE=DGCX/ISA

This example shows a concentrator with two boxes chained together on the first line and 4 on the second.

Installations With Modems Between Modules

Now on to the complicated part.  In any case which deviates from the "only physical cables connect to the board to the modules and the modules to each other" configuration covered above,  the TSX32.GEN file can not adequtely describe the configuration.  The configuration must specify, for each of the two possible chains, how the first module connects to the board, and how each module connects to the subsequent ones on the chain.  The end result is the same: some configuration string gets loaded into the board by the LHDBLOAD program.  The difference is, with these complex configurations, you have to figure out the configuration for yourself.   Consider drinking some coffee before reading on.

Specifying The Configuration String

The configuration string is going to be a sequence of bytes.    These bytes are binary values; they are not expressed as ASCII characters.   For example, the string 01020304 means "a byte containing the value 1 followed by a byte containing the value 2 followed by a byte containing the value 3 followed by a byte containing the value 4".  If you don't get it, hire somebody who does.

You are going to place this hex string for the entire configuration information into a file whose name is fixed: SY:LHDB16I.CFG.  The LHDBLOAD program checks for SY:LHDB16I.CFG every time the system boots and if it's there, the information provided by the /LINE1 and /LINE2 qualifiers in the TSX32.GEN file are ignored and the configuration string is read from the file.

You should use EDIT-32 or some compatable text editor to create this file.   It is EXPECTED that the series of hex digits contained in the file will be followed by a carriage return line feed pair, since that's the way a text file with one record is normally stored.  Use DUMP to be sure if you want.

LHDBLOAD is very particular about the format of the file.  It must contain one record.  The record must consist of a series of pairs of hex digits.   Each hex digit pair represents one byte of configuration data.  The record must be followed by CRLF.  No other data is permitted.

How To Construct The Configuration String

Since there are two "lines" or "chains" of modules attached to the host adapter, the entire string is divided into two sections, one for each line.

If you only have one chain, attach it to "line 1" and leave the second half of the configuration string missing completely.

Each half of the configuration string begins with hex 00.  The second byte in each half of the configuration string identifies the communication mode between the host adapter and the first module on that line (see the communication modes table below).

Let's call these two bytes the "line introducer".  After the line introducer comes a pair of bytes for each module connected to that line.   Let's call those pairs "module definitions".  Each module definition consists of a byte identifying the number of ports on the module (usually this will be hex 10 for 16 ports), followed by another communication mode identifier.

If the module being described by a module definition is NOT the last module in the chain, the communication mode identifier describes the way this module communicates with the  NEXT module on down the chain.

If the module being described IS the last module on the chain, the communication mode byte in its module definition describes the way it sends data back up the chain, toward the host adapter.

The end of the entire string is signaled by a hex FF character.

Communication Modes

This is not an area we fully understand.  The communication modes defined by Digi all have a "bit rate" associated with them, which is entirely clear; that's how fast the card or module sends data to the next guy down the line (or, for the last module definition on each line, how fast it sends data back up the chain).

However there are also sets of communication modes defined with such clear terms as "8 wire internal clock", "4 wire self clocked", and so forth.

The Digi documentation we have gives us a clue: modems provide a clock source, so the "external clock" modes are presumably to be used with modems.

Here is the second valuable clue to use when deciding what communication modes to use: the LHDBLOAD program itself, which takes care of "everything is local and hard wired together", select mode 0E, which you will note is the highest "8 wire internal clock" mode defined.  I'm guessing that those cables we get from Digi have 8 wires.

Probably the only entry you need from this table is the 0E.  This table probably defines the speeds for hard wired connections.  There may be some reason to slow down a hard wired connection if there are modems that come before it in the chain.

                 8 wire internal clock communication modes

Mode, in Hex

Bit Rate

00

115K

03 2400
04 4800
05 9600
06 19.2K
07 38.4K
08 57.6K
09 76.8K
0A 115K
0B 230K
0C 460K
0D 920K
0E 1.2M

When deciding what communication mode to use between a host adapter and the first module, IF THERE IS AN INTERVENING MODEM, and what communication mode to use between a module and the next module, IF THERE IS AN INTERVENING MODEM, I always suggest an entry from the following table.  I do this since Digi says that modems provide external clocks, and since the phrase "RS232" occurs in the header of the table but not the header of any of the other tables:

                 8 wire external clock RS232 communication modes

Mode, in Hex

Bit Rate

23

2400

24 4800
25 9600
26 14400
27 19.2K
28 38.4K
29 57.6K
2A 64000
2B 76.8

Examples

These examples have not been tested.  Send some functional examples if you can and we will replace them.

Let's start with a simple example: one card, one module, and a 38,400 baud modem in between.  Here is the configuration string:

00281028FF

This means "start of host adapter" (00), "communicating to the first module through a modem at 38,400 baud" (28), "module with 16 ports" (10) "communicating back to the card at 38,400" (28), "end of string" (FF).

Now assume that there is a single chain with the first 16 port module hard-wired to the card, then an intervening modem to the second module on the chain, at 57,600 baud:

000E10291029FF

This is "host adapter" (00) communicates at 1.2M to local module (0E), "16 port module" (10) communicates through 57,600 baud modem (29), "16 port module" (10) "communicates back to the first module at 57,600" (29), "end of string" FF

If you decided to put the hard wired module on line 1 and the module through the modem on line 2, this becomes:

000E100E00291029FF

"Host adapter" (00) goes 1.2M to the local module (0E) , "second line connected to host adapter" (00) "goes 57,600 baud" (29) to a 16 port module (10), which goes 57,600 back (29), "end of string" (FF).

The following table describes speed codes for "8-wire external clock"; no mention of RS-232 is made.  Whether these are appropriate for leased lines is unknown at this time.

 

                 8 wire external clock communication modes

Mode, in Hex

Bit Rate

0F

2400

10 4800
11 9600
12 19.2K
13 38.4K
14 57.6K
15 76.8K
16 115K
17 230K
18 460K
19 920K
1A 1.2M

These are speed codes for 4 wire self clocked:

                 4 wire self clocked communication modes

Mode, in Hex

Bit Rate

3C

115K

3D 115K
3F 230K
40 460K
41 460K
42 921K
43 921K
44 1.843M
45 1.843M