1 08/26/88 autobaud.gi, autobaud
  2 
  3 The autobaud feature of the Multics Communication System (MCS) is
  4 designed to recognize/configure the baud rate (bits per second) of an
  5 asynchronous hsla channel at dialup time.  The autobaud facility
  6 selects a 1200 baud rate immediately if a lead from the answer modem is
  7 on; otherwise it selects a rate of 300, 1200, 2400, 4800 or 9600 baud
  8 based on the sampling of bit changes for the incoming characters, "l",
  9 "L" or a carriage return ("CR").
 10 
 11 
 12 Lead control selection of 1200 baud:
 13 If the answer modem turns "on" pin 12 of the cable connected from it to
 14 the FNP, the channel is set to 1200 baud and the channel is then
 15 handled in the normal manner.  The answering modem can be set to
 16 respond to a switch on the originate modem which indicates that the
 17 terminal is operating at 1200 baud.  The operation of the channel will
 18 not appear any different to the user than if he had dialed into a
 19 strictly 1200 baud channel (there is no requirement for the user to
 20 type any characters before he will receive the login banner).
 21 
 22 
 23 Bit sampling selects other bauds:
 24 If the signal on pin 12 is "off", sampling for the bit changes of an
 25 input character is performed.  To accomplish this, the following
 26 sequence will occur:
 27 
 28 
 29     1. The user establishes a connection with the host.
 30     2. The user types in either the letter "l", "L" or "CR".
 31     3. The software in the FNP scans the incoming bit stream looking
 32        for bit changes at 4800 baud.  Since the "l", "L" or "CR"
 33        character is known, the changes in state of the bits ("0" or
 34        "1") will indicate the timing necessary to transmit the bits,
 35        and therefore the baud rate of the channel is determined.
 36     4. From here the channel is handled in the normal manner.  The
 37        answerback is processed if required, initial string sent if any
 38        and the login banner is displayed.
 39     5. The user types in any of the preaccess commands (MAP, etc.)  if
 40        desired.
 41     6. The user logs into the system using "l" again for "login",
 42        enter, etc.
 43 
 44 
 45 Hardware:
 46 Any asynchronous hsla channel may be configured with the autobaud
 47 feature.  Modems may or may not be used.  There are communication
 48 switchers which can be used to connect a user terminal to any of a
 49 number of host connections configured at various baud rates.  The
 50 hardware connected to the FNP channel must operate at the desired rate
 51 and allow the user to go through the above dialog.
 52 
 53 
 54 Modems:
 55 The answer modem must be able to sense the baud rate of the originate
 56 modem and operate at the desired baud rate with the FNP channel.
 57 
 58 Some modems operate at a fixed baud rate with the FNP but accept calls
 59 from originating modems operating at various baud rates.  In this case,
 60 the autobaud feature would not be used.  A modem of the is type is the
 61 Courier HST, made by USRobots.
 62 
 63 There are several modems which can be used on channels configured with
 64 the autobaud feature which make use of the pin 12 lead change.  Vadic
 65 (3467) and Western Electric (212A) are two manufacturers that make such
 66 modems.  Special circuits are required to handle the data over
 67 voice-grade dialup lines.  It is because of these special circuits that
 68 a modem of one manufacturer will not necessarily be able to interface
 69 to a modem of another manufacturer.
 70 
 71 
 72 Modem options needed for autobaud:
 73 Special modem options may be required.  Some modems can be configured
 74 to indicate the position of the high speed switch on the originate
 75 modem.  This indication is signalled by pin 12 of the RS232 interface.
 76 a. In the Western Electric 212A modem, this feature is enabled in the
 77    answer modem when the "YQ" option is installed.
 78 b. It is currently unknown how other modem manufactures treat this
 79    feature.
 80 
 81 
 82 Algorithm:
 83 The following is the algorithm used to determine the baud rates for
 84 various terminals.  This discussion is directed towards people
 85 knowledgable in communications who wish to understand the design of the
 86 autobaud facility.
 87 
 88 
 89 Notes:
 90 1. A communications line can be in one of two states, 1 (also called
 91    "mark" condition) and 0 (also called "space" condition).
 92 2. The line is normally held in a 1 state.
 93 3. The first incoming bit is always a start bit, which (being a 0 bit
 94    by definition) changes the line state to 0 and causes the hardware
 95    to begin sampling bits.
 96 4. The bits of a character are transmitted after the start bit starting
 97    with the least significant bit and ending with the parity bit after
 98    the most significant bit, followed by a stop bit.
 99 
100 
101 5. A stop bit is a 1 state held on the line for one bit time interval.
102 6. The channel is set up to receive 7 data bits plus 1 parity bit (8
103    information bits) with one start and stop bit (a total of 10 bits).
104    The parity bit in the sampling is stripped off before the
105    comparison.
106 7. Bits in the sampling dependent on the parity bit of the incoming
107    character are masked off (shown as X in sampling lines below).
108 
109 
110 In the following diagrams, all sampling is done at 4800 baud, using the
111 "l", "L" and "CR" characters.  In the incoming lines below, the time
112 between the vertical bars is the bit time for the indicated baud rate
113 in relation to the 4800 baud rate shown in the sampling lines.
114 
115 
116 Legend:
117   B - start bit (begin)
118   P - parity bit
119   E - stop bit (end)
120   X - bit in the 4800 baud sample whose value is uncertain because it
121       depends on the parity bit of incoming character
122 
123 
124 Terminal operating at 300 baud:
125 All characters are detected as line breaks since the channel is
126 operating at 4800 baud.  There are about two 4800 baud characters in
127 the same time as one bit time of a 300 baud character.  The FNP
128 hardware will sense only 300 baud bits that are "0" and they are long
129 enough to be sensed as "break" or "quit" signals.
130 
131 
132 Terminal operating at 1200 baud:
133 
134 first half of "L" is,  |   B   |   0   |   0   |  1  |  1  |
135 sampling yields:       |B|0|0|0|0|0|0|0|P|E|
136                        first char= line break
137 
138 rest of "L" is,        |   0   |   0   |   1   |   P   |   E   |
139 sampling yields        |B|0|0|0|0|0|0|0|P|E|   |B|0|0|0|1|1|1|1|P|E|
140                        second char= 000        third char= 170 if
141                                                space parity. No char
142                                                if mark parity.
143 
144 first half of "l" is,  |   B   |   0   |   0   |   1   |   1   |
145 sampling yields:       |B|0|0|0|0|0|0|0|P|E|
146                        first char= line break
147 
148 rest of "l" is,        |   0   |   1   |   1   |   P   |   E   |
149 sampling yields:       |B|0|0|0|1|1|1|1|P|E|   |B|0|0|0|1|1|1|1|P|E|
150                        second char= 170        third char= 170 if
151                                                space parity. No char
152                                                if mark parity.
153 
154 first half of "CR" is,  |   B   |   1   |   0   |  1  |  1  |
155 sampling yields:        |B|0|0|0|1|1|1|1|P|E|B|0|1|1|1|1|1|1|P|E|
156                         first char= 170     | second char = 176
157 
158 rest of "CR" is,        |   0   |   0   |   0   |   P   |   E   |
159 sampling yields         |B|0|0|0|0|0|0|0|P|E|B|0|X|X|X|X|1|1|P|E|
160                         third char= 000     | fourth char=
161                                                176 if mark parity
162                                                140 if space parity
163 
164 The third and fourth characters are ignored.
165 
166 
167 Terminal operating at 2400 baud:
168 
169 incoming "L" is,  | B | 0 | 0 | 1 | 1 | 0 | 0 | 1 | P | E |
170 sampling yields:  |B|0|0|0|0|0|1|1|P|E|B|0|0|0|1|1|X|X|P|E|
171                     first char= 140   | second char=
172                                             030 if space parity
173                                             170 if mark parity
174 
175 incoming "l" is,  | B | 0 | 0 | 1 | 1 | 0 | 1 | 1 | P | E |
176 sampling yields:  |B|0|0|0|0|0|1|1|P|E|B|0|1|1|1|1|X|X|P|E|
177                     first char= 140   | second char=
178                                              036 if space parity
179                                              176 if mark parity
180 
181 incoming "CR" is,  | B | 1 | 0 | 1 | 1 | 0 | 0 | 0 | P | E |
182 sampling yields:   |B|0|1|1|0|0|1|1|P|E|B|0|0|0|0|0|X|X|P|E|
183                     first char= 146   | second char=
184                                              000 if space parity
185                                              140 if mark parity
186 
187 
188 Terminal operating at 9600 baud:
189 incoming "L" is,  |B|0|0|1|1|0|0|1|P|E|
190 sampling yields:  | B | 1 | 0 | 1 | 1 | 1 | 1 | 1 | P | E |
191                     char= 175
192 
193 incoming "l" is,  |B|0|0|1|1|0|1|1|P|E|
194 sampling yields:  | B | 1 | 0 | 1 | 1 | 1 | 1 | 1 | P | E |
195                     char= 175
196 
197 incoming "CR" is,  |B|1|0|1|1|0|0|0|P|E|
198 sampling yields:   | B | X | X | X | 1 | 1 | 1 | 1 | P | E |
199                     char= 171, 176 or 177