1 12/12/91  dial_out, connect
  2 
  3 Syntax as a command:  dial_out channel {destination} {-control_args}
  4                  or:  connect channel {destination} {-control_args}
  5 
  6 
  7 Function:  permits you to access a remote system through a dial-out
  8 channel.
  9 
 10 
 11 Arguments:
 12 channel
 13    is the name of the dial-out or slave channel to be used.  The star
 14    convention is allowed, which means the answering service selects a
 15    channel that has a matching name or generic destination and matching
 16    attributes (if specified).
 17 destination
 18    is the dial-out destination.  This string is used when making the
 19    connection.  If omitted, the channel is priv_attached rather than
 20    dialed.
 21 
 22 
 23 Control arguments:
 24 -8bit
 25    does not suppress the parity bit of characters from the foreign
 26    system.
 27 -abbrev
 28    enables abbreviation processing of request lines.
 29 -brief, -bf
 30    disables printing of informational messages.
 31 -echo
 32    echoes locally characters typed by you.
 33 -escape CHAR, -esc CHAR
 34    makes CHAR the escape character.  (Default: !)
 35 -modes MODES
 36    allows you to select the initial values of dial_out's modes (see
 37    "List of Modes" below).
 38 
 39 
 40 -no_start_up, -ns
 41    disables execution of your start_up.dial_out.  This is assumed for
 42    the connect command.
 43 -profile PATH
 44    establishes PATH as the abbrev profile to be used for request lines.
 45    (Default: your current profile).
 46 -request REQUEST, -rq REQUEST
 47    executes the given request before entering its interaction loop.
 48    The rightmost -request is the one that is executed.  (See "List of
 49    Requests" below.)
 50 
 51 
 52 -resource RSC_DESC, -rsc RSC_DESC
 53    allows you to specify a resource description to be used when
 54    attaching the dial_out channel.
 55 -terminal_type TYPE, -ttp TYPE
 56    sets the terminal type of the remote connection to TYPE.  You can
 57    use this for hosts with unusual communications requirements.
 58 
 59 
 60 List of requests:
 61 escape CHAR, esc CHAR
 62    sets the escape character.
 63 file_output PATH, fo PATH
 64    starts copying output to a file.
 65 interrupt, int, break, brk, ip
 66    sends an interrupt signal (line break) to the foreign system.
 67 modes STR
 68    allows you to control operational modes.
 69 revert_output, ro
 70    finishes a previous file_output.
 71 send STR
 72    sends its arguments to the foreign system as if they were typed by
 73    you.
 74 
 75 
 76 send_file PATH {-control_arg}
 77    sends the contents of pathname PATH to the foreign system.  Any
 78    characters sent from the foreign system during this time are
 79    discarded; thus foreign echo of the file being sent is rejected.
 80    (If the foreign echo is slow, you may still see some echo after this
 81    request has finished.)
 82 
 83    Control arguments are--
 84    -display_input, -dsin
 85       displays characters sent from the foreign system during the
 86       transfer.
 87    -no_display_input, -ndsin
 88       does not display characters sent from the foreign system during
 89       the transfer.
 90 
 91 
 92 switch_name
 93    returns the name of the I/O switch used by dial_out.
 94 wait {STR} {-control_args}, [wait {STR} {-control_args}]
 95    waits for a specified string to come from the foreign system.  With
 96    no arguments, this request waits until any characters are sent from
 97    the foreign system.  Invoked with a string and/or -nl, it waits
 98    until the specified string is sent.
 99 
100    Control arguments are--
101    -inhibit_error, -ihe
102       specifies that dial_out should not abort after a timeout has
103       occured. This control argument requires that a timeout interval
104       greater than zero also be specified (See the '-timeout' ctl arg).
105       This control argument is most useful when wait is used as an
106       active request.
107 
108 
109    -nl
110       waits until the specified string is sent with a trailing new
111       line.
112    -nnl
113       waits until the specified string is sent but without a trailing
114       new line.
115    -no_inhibit_error, -nihe
116       Specifies that timeouts should result in an abort.  This is the
117       default.
118    -no_timeout, -ntm
119       specifies that there is no limit to how much time can elapse
120       between character transmissions from the foreign system before
121       dial_out assumes that the foreign system has finished
122       transmitting.  (Default)
123 
124 
125    -timeout N, -tm N
126       specifies the maximum number of seconds that can elapse between
127       character transmissions from the foreign system before dial_out
128       assumes that the foreign system has finished transmitting.
129 
130    As an active request (and if a timeout did not occur), all the text
131    sent from the foreign system since the last text processed by
132    dial_out, including the string specified, is returned as a quoted
133    string.
134 
135 
136 List of modes:
137 echo, ^echo
138    enables/disables local echoing of characters typed by you.
139 echo_lf, ^echo_lf
140    enables/disables echoing of LF after you type a CR.
141 line, ^line
142    enables/disables line-at-a-time mode as opposed to
143    character-at-a-time mode for your terminal.
144 quit, ^quit
145    enables/disables transparent quit mode.  In this mode the BREAK key
146    performs an "interrupt" request, rather than the normal Multics
147    function.
148 raw, ^raw
149    enables/disables direct transmission to the foreign system of
150    characters typed.  (Default: raw)
151 
152 
153 send_lf, ^send_lf
154    enables/disables transmission of a LF character as part of the
155    new-line sequence.  If you don't set this mode, the new-line
156    sequence consists of CR only; if you set it, it is CR-LF.  The
157    new-line sequence is sent when you type the CR key or an NL is
158    encountered in a file.
159 
160 
161 List of subsystem requests:
162 .
163    prints a line of requests available in dial_out.
164 ..
165    executes Multics command lines.
166 ?
167    prints a list of requests available in dial_out.
168 abbrev, ab
169    controls abbreviation processing of requests lines.
170 answer
171    provides preset answers to questions asked by another request.
172 do
173    executes/returns a request line with argument substitution.
174 execute, e
175    executes a Multics command line.
176 
177 
178 exec_com, ec
179    executes a file of dial_out requests that can return a value.
180 help
181    prints information about dial_out requests and other topics.
182 if
183    conditionally executes/returns one of two request lines.
184 list_help, lh
185    displays the name of all dial_out info segments on given topics.
186 quit, q
187    exits dial_out.
188 
189 
190 ready, rdy
191    prints a Multics ready message.
192 subsystem_name
193    prints the name of this subsystem.
194 subsystem_version
195    prints the version number of this subsystem.
196 
197 
198 Access required:  You must have the dialok attribute and rw access to
199 the access control segment for the channel (type "user attributes" to
200 determine what attributes you have).
201 
202 
203 Notes:  The dial_out command executes your start_up.dial_out exec_com
204 on invocation; the connect command executes an exec_com specific to the
205 given destination (or channel if no destination is supplied) instead of
206 a start_up program.  The ec suffix ".dial_out" for dial_out and connect
207 exec_coms is assumed if you don't supply it.
208 
209 The dial_out and connect commands acquire an appropriate communications
210 channel to a foreign system, execute your dial_out start_up and initial
211 request, and then enter an environment in which characters typed on
212 your terminal are sent to the foreign system and in which characters
213 sent from the foreign system become output at your terminal.  The
214 connect command differs from dial_out in that it automatically
215 generates an initial request of "ec DESTINATION" (or "ec CHANNEL" if no
216 destination is supplied) to start up communications to the appropriate
217 destination.
218 
219 
220 When the destination specifies an X.25 address, you can optionally
221 precede it with "*" or "x29," to indicate that an X.29 (PAD) call
222 should be made.  For example, a destination of
223    x.29,3106:p25 or
224    *3106:p25
225 specifies an X.29-type call on TYMNET.
226 
227 After the dial_out environment is entered, you can enter dial_out
228 requests by preceeding them with the escape character ("!" by
229 default).  Characters from the escape character to the next escape
230 character or the end of the line are interpreted as a request.  You
231 must double the escape character to send it to the remote system.
232 
233 
234 When calling dial_out from an absentee process or from an exec_com
235 which is to send canned input lines to the remote system, it is
236 important to use the "dial_out -request ""ec PATH""" control argument.
237 This request invokes the PATH.dial_out exec_com containing all the
238 lines to be sent to the remote system.  This data should be given in
239 the form of dial_out send requests, interspersed with dial_out wait
240 requests to pause until the remote system is ready to receive more
241 input.  See the descriptions of the wait and send requests above.
242 Any attempt to dial_out without the use of PATH.dial_out, or by
243 placing the dial_out subsystem requests within the calling absin/ec
244 will result in unrecoverable I/O errors.
245 
246 
247 The send request sends only the data string given as its first
248 argument.  It does not append a carriage return (CR) or newline (NL)
249 character to this string.  Since most remote systems expect input
250 lines to be terminated by a CR character, this character must be
251 explicitly included in the send request.  See the example below for a
252 sample dial_out exec_com.
253 
254 The wait request pauses within the dial_out exec_com until a specific
255 string is received from the remote system.  This allows the exec_com
256 to delay sending further input until the remote system is prepared to
257 receive the input.  Such pauses are especially important when
258 communicating with systems that are not prepared to receive type-ahead
259 input.
260 
261 
262 When dialing out to another Multics system, the general_ready command
263 can be used on the remote system to set a ready message which is
264 distinct from the local ready message.  A distinctive string in the
265 remote ready line can be specified in wait requests to determine when
266 the remote system is ready to receive the next command line.  This
267 technique avoids sending data faster than the remote communications
268 system can process it.  Rapid bursts of data can cause Front-end
269 Network Processor (FNP) buffer overflows (the Bell-QUIT syndrome).
270 
271 
272 Output from the remote system being directed to an absout file via an
273 absentee process or output_file via the dial_out "file_output"
274 request may contain terminal delay and or initial_string characters in
275 the output if the user's remote terminal type contains delays or an
276 initial_string.  The terminal type specifications can be displayed via
277 the "display_ttt -ttp TERMINAL_TYPE" command.  One terminal type that
278 does not contain delays or an intial_string is the ASCII_CRT terminal
279 type and thus may be used as a parameter to the remote system login
280 line in the PATH.dial_out exec_com.  Note the remote system login
281 line in SAMPLE.dial_out below.
282 
283 
284 A good way to verify that the absentee will correctly send and receive
285 data as expected is to execute the absin file as an interactive
286 exec_com until the entire absin/ec performs satisfactorily.  Once the
287 absin/ec has successfully operated by sending and receiving data
288 interactively, the absin/ec can be expected to run equivalently via
289 an absentee process.
290 
291 
292 If the dial_out exec_com pauses at a wait request and does not
293 continue, then the remote system has not sent the string expected by
294 the wait request.  To stop execution of the dial_out exec_com at this
295 point and print the data from the remote system, hit the BREAK key
296 (to signal quit on the local system) and then type a program_interrupt
297 (pi) command to reenter dial_out.  The quit/pi sequence may have to
298 be given several times.  Because dial_out has adjusted the terminal
299 modes on the local system, you may have to end the program_interrupt
300 command line with a newline (LF) character rather than a carriage
301 return (CR).  Note that, in order to have the BREAK key send a quit
302 signal to the local system, the dial_out quit mode must be disabled
303 (via "!modes ^quit").  The quit mode is disabled by default.
304 
305 
306 Examples:
307         ! print SAMPLE.ec
308 
309           &command_line -off
310           dial_out ** 6430 -rsc line_type=none,baud_rate=1200 -request
311             "ec SAMPLE"
312           &quit
313 
314 
315         ! print SAMPLE.dial_out
316 
317           &version 2
318           &trace off
319           &set CR "\015"
320           &set LF "&NL"
321           wait "Load"
322           wait "&(LF)"
323           send "l Parisek -ns -ttp ASCII_CRT &(CR)"
324           wait "Password"
325           wait "&(LF)"
326           send <password> &(CR)"
327 
328 
329           send "general_ready -string ""<wait_string>"" -set &(CR)"
330           send "ready_on &(CR)"
331           wait "<wait_string>"
332           send "<command> &(CR)"
333           wait "<wait_string>"
334           send "logout &(CR)"
335           wait "hangup"
336           &quit