home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume16 / ecuman3 / part01 next >
Internet Message Format  |  1991-01-05  |  57KB

  1. From: wht@n4hgf (Warren Tucker)
  2. Newsgroups: comp.sources.misc
  3. Subject: v16i022:  ECU async comm package rev 3.0 manual, Part01/03
  4. Message-ID: <1991Jan5.062211.3862@sparky.IMD.Sterling.COM>
  5. Date: 5 Jan 91 06:22:11 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: cd8c975d 81aa3d38 372b91df 3e20f47c
  8.  
  9. Submitted-by: Warren Tucker <wht@n4hgf>
  10. Posting-number: Volume 16, Issue 22
  11. Archive-name: ecuman3/part01
  12.  
  13. ---- Cut Here and feed the following to sh ----
  14. #!/bin/sh
  15. # This is ecuman3, a shell archive (shar 3.46)
  16. # made 12/26/1990 10:30 UTC by wht%n4hgf@gatech.ecu
  17. # Source directory /u1/src/ecu
  18. #
  19. # existing files WILL be overwritten
  20. #
  21. # This is part 1 of a multipart archive                                    
  22. # do not concatenate these parts, unpack them in order with /bin/sh        
  23. #
  24. # This shar contains:
  25. # length  mode       name
  26. # ------ ---------- ------------------------------------------
  27. # 119841 -rw-r--r-- doc/ecu.man
  28. #
  29. if touch 2>&1 | fgrep 'amc' > /dev/null
  30.  then TOUCH=touch
  31.  else TOUCH=true
  32. fi
  33. if test -r _shar_seq_.tmp; then
  34.     echo 'Must unpack archives in sequence!'
  35.     echo Please unpack part `cat _shar_seq_.tmp` next
  36.     exit 1
  37. fi
  38. # ============= doc/ecu.man ==============
  39. if test ! -d 'doc'; then
  40.     echo 'x - creating directory doc'
  41.     mkdir 'doc'
  42. fi
  43. echo 'x - extracting doc/ecu.man (Text)'
  44. sed 's/^X//' << 'SHAR_EOF' > 'doc/ecu.man' &&
  45. X
  46. X
  47. X
  48. X                  - 1 -
  49. X
  50. X
  51. X
  52. X                    ECU    3.00
  53. X
  54. X                (Extended Call Utility)
  55. X
  56. X
  57. X
  58. X
  59. X
  60. X
  61. X            Personal Communications    Package
  62. X                   for XENIX System    V
  63. X
  64. X
  65. X
  66. X
  67. X
  68. X
  69. X
  70. X
  71. X
  72. X
  73. X
  74. X
  75. X        Warren H. Tucker, III <wht@n4hgf.Mt-Park.GA.US>
  76. X
  77. X
  78. X
  79. X
  80. X
  81. X
  82. X                 Technical Description
  83. X                 Revision 3.00
  84. X                    12/26/90
  85. X
  86. X
  87. X
  88. X
  89. X
  90. X
  91. X
  92. X
  93. X
  94. X
  95. X
  96. X
  97. X
  98. X
  99. X
  100. X
  101. X
  102. X
  103. X
  104. X
  105. X
  106. X    Public Domain by wht@n4hgf                12/26/90
  107. X
  108. X
  109. X
  110. X
  111. X
  112. X
  113. X
  114. X    ECU    Technical Description                       1
  115. X
  116. X
  117. X
  118. X    1.    Introduction
  119. X
  120. X
  121. X    ECU    (Extended Call Utility)    is a personal communications program for
  122. X    users of SCO UNIX V.3.2/386    and XENIX V on 80286 and 80386 systems.
  123. X    This preliminary document describes    ECU functionality and implementation
  124. X    from a technical point of view.
  125. X
  126. X    ECU    provides the classic terminal communications facility of passing
  127. X    keyboard data to a serial line and incoming    data to    the computer video
  128. X    display.  In addition, a dialing directory,    a function key mapping
  129. X    feature, and session logging are available.
  130. X
  131. X    A very flexible procedure (script) language    is also    incorporated to
  132. X    automate many communications tasks.     Using shell scripts and ECU
  133. X    procedures,    it is possible to use ECU in an    entirely "unattended"
  134. X    fashion for    batch-style communications sessions.
  135. X
  136. X    ECU    presents to the    host a flexible    "ANSI" terminal    type, accepting    any
  137. X    valid video    control    sequences from MS-DOS or SCO documentation as of
  138. X    late 1990.    It also    fares well, though imperfectly,    with Sun and VT-100
  139. X    in-band video control sequences.  Standards    are great: everybody should
  140. X    have one, especially if they call it "ANSI." For more information, refer
  141. X    to the section below titled    "ANSI Filter."
  142. X
  143. X    The    program    supports almost    any local terminal (console) which can be
  144. X    described in a termcap database entry.  For    more information, refer    to
  145. X    "Supported Terminals."
  146. X
  147. X    ECU    supports numerous file transfer    protocols: as of this writing,
  148. X    XMODEM, XMODEM/CRC,    XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16,
  149. X    ZMODEM/CRC-32, Kermit and SEAlink are supported.  For more information,
  150. X    refer to the sections describing the individual interactive    and
  151. X    procedure file transfer commands.
  152. X
  153. X    This document is better than that supplied with ECU    2.0, but is still
  154. X    rough in many places.  It attempts to get across to    the inquiring mind
  155. X    how    ECU works.  In places, an understanding    of the UNIX programming
  156. X    model, UNIX, XENIX and UUCP    constructs and asynchronous communications
  157. X    techniques is assumed.  In other places, the document goes into tedious
  158. X    detail about the simplest of concepts.  A great deal of attention has
  159. X    been placed    in accurate and    robust coding of the program.  Perhaps,    time
  160. X    permitting,    one day    I can say the same for this document.
  161. X
  162. X
  163. X
  164. X
  165. X
  166. X
  167. X
  168. X
  169. X
  170. X
  171. X
  172. X    Public Domain by wht@n4hgf                12/26/90
  173. X
  174. X
  175. X
  176. X
  177. X
  178. X
  179. X
  180. X    ECU    Technical Description                       2
  181. X
  182. X
  183. X
  184. X    2.    Basic Organization
  185. X
  186. X
  187. X    ECU    forks to run as    two separate processes,    a transmitter (XMTR) and a
  188. X    receiver (RCVR).  The two processes    communicate via    signals    and a System
  189. X    V shared memory segment.  XMTR controls RCVR and terminates    it under
  190. X    certain circumstances, called here auxiliary operations.  After an
  191. X    auxiliary operation    completes, XMTR    forks again to recreate    RCVR.
  192. X
  193. X
  194. X    2.1     Transmitter Process (XMTR)
  195. X
  196. X
  197. X    XMTR accepts user input from the computer keyboard;    input is recognized
  198. X    as belonging to one    of two types: 1) transmit data and 2) ECU commands.
  199. X    Keyboard input is passed to    the serial line    driver until an    ECU command
  200. X    is detected.  Commands are prefixed    with a HOME key    which causes ECU to
  201. X    accept keyboard data up to the next    ENTER key as command text.  After a
  202. X    command has    been processed,    keyed data is again routed to the serial
  203. X    line.
  204. X
  205. X
  206. X    2.1.1  Keyboard Interface
  207. X
  208. X    The    keyboard driver    is set into the    raw mode.  XMTR    reads characters one
  209. X    at a time from the driver.    Normally, characters read from the keyboard
  210. X    are    passed directly    to the serial line driver.  The    ASCII ESC ("escape")
  211. X    character is handled as a special case.  When a function key is pressed,
  212. X    the    keyboard generates to XMTR an ESC character, followed by more
  213. X    characters describing which    function key has been pressed.    Pressing the
  214. X    ESC    key also causes    XMTR to    see an ESC character, but with no subsequent
  215. X    function key "suffix".
  216. X
  217. X    When an ESC    character is read, XMTR    delays transmission of the character
  218. X    to the line    for a short period to determine    whether    the ESC    key has    been
  219. X    pressed or a function key has been pressed.     If no "suffix"    is detected,
  220. X    the    ESC is passed to the line, having suffered an insignificant delay
  221. X    given human    typing speeds.
  222. X
  223. X    If a function key "suffix" is detected, the    function key type is
  224. X    decoded.  The HOME key indicates an    ECU command follows.  Any other
  225. X    function key is passed to the function key mapping feature (described
  226. X    later).
  227. X
  228. X
  229. X    2.1.2  ECU Command Assembly
  230. X
  231. X    After HOME has been    pressed, XMTR presents a reverse video prompt on the
  232. X    display, indicating    its readiness to accept    a command.  During input,
  233. X    the    command    may be edited using the    same control keys specified with
  234. X    stty(C).  Additonal    editing    using the left and right arrow keys and    the
  235. X
  236. X
  237. X
  238. X    Public Domain by wht@n4hgf                12/26/90
  239. X
  240. X
  241. X
  242. X
  243. X
  244. X
  245. X
  246. X    ECU    Technical Description                       3
  247. X
  248. X
  249. X
  250. X    Ins(ert) key are usually available.     Command input may be aborted by
  251. X    pressing ESC.  When    a command string has been assembled, it    is passed to
  252. X    the    command    processor, which breaks    the command arguments into a token
  253. X    array similar to the argc/argv array.  When    the command handler returns,
  254. X    XMTR returns to its    normal mode of copying keyboard    data to    the serial
  255. X    line.
  256. X
  257. X    Further information    on XMTR    command    line processing    may be found in
  258. X    later sections titled Line Editing and Interactive Command History.
  259. X
  260. X
  261. X    2.1.3  Function Key    Mapping
  262. X
  263. X    While in tty-to-line mode, function    keys other than    HOME are available
  264. X    to be mapped to transmit short keystroke sequences on a connection by
  265. X    connection basis.  Under control of    the dialing command ("Dial"
  266. X    described below)  or the function key control command ("FK"), predefined
  267. X    function key maps may be loaded.
  268. X
  269. X    Function keys which    may be mapped are F1 through F12, PgUp,    PgDn, End,
  270. X    Ins, Del, and the cursor control keys.
  271. X
  272. X    The    unshifted keypad '5' key is permanently    mapped to produce a screen
  273. X    snapshot when it is    pressed    and XMTR is reading from the keyboard.
  274. X
  275. X    Thhe BackTab (shift    Tab) key is mpermanently mapped    to a screen
  276. X    redisplay feature.
  277. X
  278. X
  279. X    2.1.4  Auxiliary Operation Control
  280. X
  281. X    Certain commands cause ECU to perform what is called an auxiliary
  282. X    operation, requiring temporary termination of the RCVR process.  Such
  283. X    operations are not as useful with cu(C), because cu    does NOT kill its
  284. X    receiver process at    any time.  As a    result,    it impossible to run a
  285. X    modern file    transfer protocol since    the cu receiver    process    eats some of
  286. X    the    characters sent    by the remote protocol program.
  287. X
  288. X    There are two types    of auxiliary operations: 1) internal interactive
  289. X    command or procedure execution and 2) external program execution.
  290. X    Certain internal commands require tight control over the serial line.
  291. X    For    instance, the dial command requires transmitting modem command
  292. X    strings and    receiving modem    response codes.     Such functions    are best
  293. X    accomplished by single-process control of the line.     External program
  294. X    execution is of two    kinds, file transfer invocation    and local
  295. X    shell/command execution.
  296. X
  297. X    The    RCVR process is    terminated in any of these cases either    to avoid the
  298. X    RCVR swallowing characters intended    for other targets (the modem handler
  299. X    in XMTR or the file    transfer protocol) or to avoid having remote data
  300. X    interspersed with the output of local programs.
  301. X
  302. X
  303. X
  304. X    Public Domain by wht@n4hgf                12/26/90
  305. X
  306. X
  307. X
  308. X
  309. X
  310. X
  311. X
  312. X    ECU    Technical Description                       4
  313. X
  314. X
  315. X
  316. X    2.2     Receiver Process (RCVR)
  317. X
  318. X
  319. X    The    receiver process reads the incoming serial data    stream and passes it
  320. X    to the user    terminal driver    through    a filter which scans for events    such
  321. X    as the occurrence of ASCII BEL (bell) characters or    terminal control
  322. X    sequences.    RCVR also handles the session logging and ANSI filter
  323. X    functions.
  324. X
  325. X
  326. X    2.2.1  ANSI    Filter
  327. X
  328. X    Since the term "ANSI" is used to describe many variations on the ANSI
  329. X    X3.64 recommendations for terminal control (read "IBM pseudo-ANSI"), the
  330. X    ECU    receiver process has an    "ANSI filter" which attempts to    translate
  331. X    incompatible (read "MSDOS")    ANSI-like control sequences to sequences
  332. X    acceptable to the UNIX/XENIX display driver.  This includes    support    for
  333. X    the    MS-DOS "save cursor" and "restore cursor" sequences.  More
  334. X    information    may be found later in "Terminal    Model."
  335. X
  336. X
  337. X    2.2.2  Session Logging
  338. X
  339. X    When directed by the user, the RCVR    process    logs incoming serial data to
  340. X    a file named on the    log command line.  The default operation is to
  341. X    filter unprintable characters (other than TAB and NL) from the log,    but
  342. X    raw    logging    is available with a command option.  In    a like manner, the
  343. X    default is for appending to    an existing file, but a    command    option may
  344. X    specify scratching any previous contents.
  345. X
  346. X    Log    files receive header lines each    time the file is opened, stating the
  347. X    logical system name, the telephone number and the date/time.
  348. X
  349. X
  350. X
  351. X    2.3     Supported Terminals
  352. X
  353. X
  354. X    ECU    does not attempt to support terminal emulation in the classic sense
  355. X    of the word.  It presents to the remote host an "ANSI-like"    terminal
  356. X    type as described earlier in the introduction and in the section titled
  357. X    "ANSI Filter." However, it does support, with limitations, any LOCAL
  358. X    terminal (console) for which a valid termcap description exists. You MAY
  359. X    be able to use ECU with a remote terminal (calling into UNIX/XENIX over
  360. X    a network or modem), but you may get unfavorable results with function
  361. X    key    usage if your modem is a "packetizing" type, such as a Telebit or if
  362. X    ethernet or    other networking chops up your keystroke sequences.  ECU
  363. X    allows approximately 60 milliseconds after receiving an ASCII ESC
  364. X    character for later    characters of a    function key sequence to arrive.  If
  365. X    at least one character of the sequence has not been    received in that
  366. X    time, ECU treats the key as    an ESCape, not a function key.    This typical
  367. X
  368. X
  369. X
  370. X    Public Domain by wht@n4hgf                12/26/90
  371. X
  372. X
  373. X
  374. X
  375. X
  376. X
  377. X
  378. X    ECU    Technical Description                       5
  379. X
  380. X
  381. X
  382. X    problem of detecting ESC vs. function key is unfortunate, but we must
  383. X    live with it until paradigms change    (say, in about 2010?).
  384. X
  385. X    The    termcap    entry for a console MUST contain a valid entry for the
  386. X    following database entries:
  387. X
  388. X
  389. X    cl        clear screen
  390. X    kl        cursor left
  391. X    kr        cursor right
  392. X    dc        delete character
  393. X    dl        delete line
  394. X    cd        clear to end of display
  395. X    ce        clear to end of line
  396. X    ic        insert character
  397. X    al        insert line    ("add" a "line")
  398. X    cm        cursor motion
  399. X    so        stand out (terminal    specific attention getter)
  400. X    se        stand end
  401. X
  402. X
  403. X    The    above sequences    MUST be    present, valid and reasonably efficient.
  404. X    ECU    does not use curses during most    of it's    operation, and unlike
  405. X    curses, makes no attempt to    emulate    missing    terminal functionality.
  406. X    Failure to provide valid entries will result in strange behavior with no
  407. X    warning.
  408. X
  409. X    Note that the formal termcap description of    "kl" and "kr" state these
  410. X    are    sequences generated by the terminal keyboard, but ECU expects that
  411. X    these sequences also causes    the desired effect when    sent to    the screen.
  412. X
  413. X    Additionally, the following, optional, sequences will be used if they
  414. X    are    detected.
  415. X
  416. X
  417. X    mb        bold on ("XENIX" extension)
  418. X    me        bold off ("XENIX" extension)
  419. X    us        underscrore    on
  420. X    ue        underscrore    off
  421. X    vb        visual bell
  422. X
  423. X
  424. X    A future version of    ECU may    use terminfo instead of    termcap.  Problems
  425. X    with terminfo prevent its use at the present time.    In addition, early
  426. X    versions of    XENIX do not support terminfo.
  427. X
  428. X
  429. X
  430. X
  431. X
  432. X
  433. X
  434. X
  435. X
  436. X    Public Domain by wht@n4hgf                12/26/90
  437. X
  438. X
  439. X
  440. X
  441. X
  442. X
  443. X
  444. X    ECU    Technical Description                       6
  445. X
  446. X
  447. X
  448. X    2.4     Function Key Recognition
  449. X
  450. X
  451. X    ECU    recognizes 23 function keys as having special significance to its
  452. X    operation.    They are (with their AT/"ANSI" character sequences):
  453. X
  454. X     Internal  Description      AT/"ANSI" Char-
  455. X     Name       or Key Label      acter    Sequence
  456. X     --------  ------------      ---------------
  457. X     F1       F1             ESC [ M
  458. X     F2       F2             ESC [ N
  459. X     F3       F3             ESC [ O
  460. X     F4       F4             ESC [ P
  461. X     F5       F5             ESC [ Q
  462. X     F6       F6             ESC [ R
  463. X     F7       F7             ESC [ S
  464. X     F8       F8             ESC [ T
  465. X     F9       F9             ESC [ U
  466. X     F10       F10             ESC [ V
  467. X     F11       F11             ESC [ W
  468. X     F12       F12             ESC [ X
  469. X     Home       Home             ESC [ H
  470. X     End       End             ESC [ F
  471. X     PgUp       Page    up         ESC [ I
  472. X     PgDn       Page    down         ESC [ G
  473. X     CUU       Up arrow         ESC [ A
  474. X     CUD       Down    arrow         ESC [ B
  475. X     CUL       Left    arrow         ESC [ D
  476. X     CUR       Right arrow         ESC [ C
  477. X     CU5       "Cursor 5"         ESC [ E
  478. X     Ins       Insert         ESC [ L
  479. X     BkTab       Back    Tab         ESC [ Z
  480. X
  481. X
  482. X    ECU    recognizes function keys entered by the    user in    one of two ways,
  483. X    depending upon whether the terminal    is recognized as an "ANSI" or "non-
  484. X    ANSI" terminal (see    "Supported Terminals" above).
  485. X
  486. X    If an AT/"ANSI" terminal is    in use,    ECU expects the    standard AT/"ANSI"
  487. X    sequences to be generated by the keyboard according    to the above table.
  488. X    This means that no use of the setkey(C) program (or    similar
  489. X    functionality) may be active.
  490. X
  491. X    If an "non-ANSI" terminal is in use, ECU matches a function    key sequence
  492. X    to an internal function key    representation by testing all keystroke
  493. X    sequences again an internal    table loaded at    the beginning of execution
  494. X    from the file ~/.ecu/nonansikeys.  NOTE that supported terminals MUST
  495. X    employ function keys which generate    sequences beginning with an ASCII
  496. X    ESC    (escape, 0x1B, decimal 27, octal 33).
  497. X
  498. X    The    format of an file entry    is shown below in the 'ansilike' example
  499. X
  500. X
  501. X
  502. X    Public Domain by wht@n4hgf                12/26/90
  503. X
  504. X
  505. X
  506. X
  507. X
  508. X
  509. X
  510. X    ECU    Technical Description                       7
  511. X
  512. X
  513. X
  514. X    (used to test ECU from the console by defining an 'ansi' terminal type
  515. X    nevertheless equivalent to 'ansi').
  516. X
  517. X    Lines beginning with '#' are comments.
  518. X
  519. X
  520. X     #+------------------------------
  521. X     # ECU 3.0 nonansikeys
  522. X     #-------------------------------
  523. X     ansilike
  524. X     ansi
  525. X     msdos
  526. X     dos
  527. X     dosansi
  528. X     test
  529. X         F1:F1:         esc [ M
  530. X         F2:F2:         esc [ N
  531. X         F3:F3:         esc [ O
  532. X         F4:F4:         esc [ P
  533. X         F5:F5:         esc [ Q
  534. X         F6:F6:         esc [ R
  535. X         F7:F7:         esc [ S
  536. X         F8:F8:         esc [ T
  537. X         F9:F9:         esc [ U
  538. X         F10:F10:         esc [ V
  539. X         F11:F11:         esc [ W
  540. X         F12:F12:         esc [ X
  541. X         Home:Home:         esc [ H
  542. X         End:End:         esc [ F
  543. X         PgUp:PgUp:         esc [ I
  544. X         PgDn:PgDn:         esc [ G
  545. X         CUU:CUU:         esc [ A
  546. X         CUL:CUL:         esc [ D
  547. X         CU5:CU5:         esc [ E
  548. X         CUR:CUR:         esc [ C
  549. X         CUD:CUD:         esc [ B
  550. X         Ins:Ins:         esc [ L
  551. X         BkTab:BackTab:  esc [ Z
  552. X
  553. X
  554. X    The    first line(s) in a terminal keyboard description begin in column 1
  555. X    and    contain    the terminal types (a la $TERM)    for which the keyboard
  556. X    description    are valid.  The    example    entry contains several references to
  557. X    terminal types containing the substring description    servicing multiple
  558. X    terminal types.
  559. X
  560. X    ECU    determines whether a terminal meets the    ansi vs.  ANSI distinction
  561. X    by searching for 'ansi' in the $TERM environment variable (without
  562. X    regard to case: 'AnSi' will    match as well as though    your $TERM
  563. X    environment    variable does not contain 'ansi' (such as 'sun'), then you
  564. X    may    add the    terminal type to the 'ansilike'    entry rather than create a
  565. X
  566. X
  567. X
  568. X    Public Domain by wht@n4hgf                12/26/90
  569. X
  570. X
  571. X
  572. X
  573. X
  574. X
  575. X
  576. X    ECU    Technical Description                       8
  577. X
  578. X
  579. X
  580. X    separate entry.
  581. X
  582. X    Following the "first lines"    are key    definition entries, each preceded by
  583. X    at least one tab or    space.    Each entry is composed of three    fields
  584. X    delimited by commas.  The first field of an    entry is the internal ECU
  585. X    function key name and must be chosen from the following strings (with no
  586. X    regard to case): "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9",
  587. X    "F10", "F11", "F12", "Home", "End",    "PgUp",    "PgDn",    "CUU" (cursor up),
  588. X    "CUL" (cursor left), "CU5" (unshifted cursor pad 5), "CUR" (cursor
  589. X    right) and "CUD" (cursor down). The    second field contains the name of
  590. X    the    key as it appears on the non-ANSI keyboard (such as "F16" for End on
  591. X    the    Wyse 60).  The third field is a    description of the character
  592. X    sequence generated by the non-ANSI keyboard    when the chosen    key is
  593. X    pressed; it    is a string of one or more tokens separated by spaces or
  594. X    tabs.
  595. X
  596. X    Note that while ECU    requires a function key    sequence to begin with an
  597. X    ASCII ESC (escape),    each table entry must contain an 'esc' as it's first
  598. X    sequence token.  This seemingly superfluous    requirement ensures
  599. X    compatibility with possible    future support for function keys which do
  600. X    not    begin with ESC.
  601. X
  602. X    In addition, function key sequences    may not    contain    the NUL    (0)
  603. X    character, nor may they exceed 10 characters, including the    leading    ESC.
  604. X
  605. X    The    tokens are described in    full in    the following  sections    titled
  606. X    "Function Key Recognition" and "Function Key Mapping."
  607. X
  608. X    PLEASE NOTE: ECU does not have a reasonable    way for    you to terminate it
  609. X    if there are no Home and End keys defined, so it refuses to    proceed    if
  610. X    no definitions are found.  Even so,    if you have incorrect definitions,
  611. X    you    may not    be able    to get out of ECU without a kill -1 <pid> from
  612. X    another terminal or    hanging    up your    connection with    UNIX/XENIX if using
  613. X    ECU    from remote.
  614. X
  615. X
  616. X    2.5     Function Key Mapping
  617. X
  618. X
  619. X    ECU    recognizes function keys in a manner described in the above section
  620. X    titled "Function Key Recognition." This section deals with how ECU
  621. X    behaves once a function key    has been recognized as having been entered
  622. X    at the keyboard.
  623. X
  624. X    All    function keys with the exception of the    Home, BkTab (shift TAB), and
  625. X    keypad unshifted 5 key can be programmed to    emit selected strings.    For
  626. X    instance, when communicating with a    Stratus    computer, doing    your best to
  627. X    emulate a VT100, a function    key map    might be constructed as    follows:
  628. X
  629. X
  630. X
  631. X
  632. X
  633. X
  634. X    Public Domain by wht@n4hgf                12/26/90
  635. X
  636. X
  637. X
  638. X
  639. X
  640. X
  641. X
  642. X    ECU    Technical Description                       9
  643. X
  644. X
  645. X
  646. X     F1     F1    F2  F2           Home ecu    cmd    PgUp  dispform
  647. X     F3     F3    F4  F4           End  enter    PgDn  cancel
  648. X     F5     F5    F6  F6           Ins  local shell    CUR5  Screen dump
  649. X     F7     status    F8  no status  BkTab restore receiver display
  650. X     F9        F10 redisp     CUR^ ^        CUR>  >
  651. X     F11    F12           CUR< <        CURv  v
  652. X
  653. X
  654. X    Function key mapping is placed in ~/.ecu/keys.  The    Stratus    example:
  655. X
  656. X    stratus
  657. X    F1:F1:esc O q
  658. X    F2:F2:esc O r
  659. X    F3:F3:esc O s
  660. X    F4:F4:esc O t
  661. X    F5:F5:esc O u
  662. X    F6:F6:esc O v
  663. X    F7:F7:esc O w
  664. X    F8:status:dc4
  665. X    F9:no status:nl
  666. X    F10:redisp:esc O y
  667. X    F11:redisp:syn
  668. X    PGDN:cancel:esc    O Q
  669. X    END:enter:esc O    M
  670. X    PGUP:dispform:esc O R
  671. X    CUU:^:dle
  672. X    CUD:v:so
  673. X    CUL:<:stx
  674. X    CUR:>:ack
  675. X
  676. X
  677. X    If you have    installed the mapkey file (as described    in the release
  678. X    directory in mapkeys/README), then ALT-a through ALT-z causes the
  679. X    "silent" execution of procedures 'alt_a.ep'    for ALT-a, 'alt_b.ep' for
  680. X    ALT-b, etc.     The models subdirectory contains an example alt_h.ep which
  681. X    will home the cursor when ALT-h is pressed.     This facility allows the
  682. X    execution of 26 procedures without ECU itself changing the video display
  683. X    at all.  Any changes to the    display    (short of procedure errors) will
  684. X    result solely from the action of the invoked procedure.  If    the
  685. X    procedure matching the ALT-[a-z] key pressed cannot    be found, a short
  686. X    error message is printed and the terminal bell is rung.  (Using back tab
  687. X    may    be used    to refresh the display in this event.)
  688. X
  689. X    The    strings    used to    represent "non-printable" characters are identical
  690. X    to the formal ASCII    names given them (without regard to case), viz:
  691. X
  692. X
  693. X
  694. X
  695. X
  696. X
  697. X
  698. X
  699. X
  700. X    Public Domain by wht@n4hgf                12/26/90
  701. X
  702. X
  703. X
  704. X
  705. X
  706. X
  707. X
  708. X    ECU    Technical Description                      10
  709. X
  710. X
  711. X
  712. X     0x00 nul      NUL may not appear in a non-ANSI
  713. X     0x01 soh      function    key definition
  714. X     0x02 stx
  715. X     0x03 etx
  716. X     0x04 eot
  717. X     0x05 enq
  718. X     0x06 ack
  719. X     0x07 bel
  720. X     0x08 bs
  721. X     0x09 ht
  722. X     0x0A nl
  723. X     0x0B vt
  724. X     0x0C np
  725. X     0x0D cr
  726. X     0x0E so
  727. X     0x0F si
  728. X     0x10 dle
  729. X     0x11 dc1
  730. X     0x12 dc2
  731. X     0x13 dc3
  732. X     0x14 dc4
  733. X     0x15 nak
  734. X     0x16 syn
  735. X     0x17 etb
  736. X     0x18 can
  737. X     0x19 em
  738. X     0x1A sub
  739. X     0x1B esc
  740. X     0x1C fs
  741. X     0x1D gs
  742. X     0x1E rs
  743. X     0x1F us
  744. X     0x20 sp
  745. X     0x7F del
  746. X
  747. X
  748. X
  749. X    2.6     Host Video Control Sequences
  750. X
  751. X
  752. X
  753. X    2.6.1  All Local Terminals
  754. X
  755. X    The    following sequences are    recieved over the line by ECU and properly
  756. X    interpreted    for all    local terminal types (multiscreen, rlogin/xterm
  757. X    pseudotty, serial).
  758. X
  759. X
  760. X
  761. X
  762. X
  763. X
  764. X
  765. X
  766. X    Public Domain by wht@n4hgf                12/26/90
  767. X
  768. X
  769. X
  770. X
  771. X
  772. X
  773. X
  774. X    ECU    Technical Description                      11
  775. X
  776. X
  777. X
  778. X    Sequence  |    Description
  779. X    ----------+-------------------------------
  780. X    ESC    [ @   |    ICH
  781. X    ESC    [ A   |    CUU
  782. X    ESC    [ B   |    CUD
  783. X    ESC    [ C   |    CUF
  784. X    ESC    [ D   |    CUB
  785. X    ESC    [ E   |    CNL      See ANSI X3.64,
  786. X    ESC    [ F   |    CPL      screen(HW) and/or
  787. X    ESC    [ H   |    CUP      MS-DOS Technical
  788. X    ESC    [ J   |    ED      Reference Manual
  789. X    ESC    [ K   |    EL
  790. X    ESC    [ L   |    IL
  791. X    ESC    [ M   |    DL
  792. X    ESC    [ P   |    DCH
  793. X    ESC    [ S   |    SU
  794. X    ESC    [ T   |    SD
  795. X    ESC    [ X   |    ECH
  796. X    ESC    [ `   |    HPA
  797. X    ESC    [ a   |    HPR
  798. X    ESC    [ d   |    VPA
  799. X    ESC    [ e   |    VPR
  800. X    ESC    [ f   |    HVP
  801. X    ESC    [ ? m |    SGR
  802. X    ESC    [ n   |    DSR (see below)
  803. X    ESC    [ s   |    save cursor MS-DOSism
  804. X    ESC    [ u   |    restore    cursor MS-DOSism
  805. X
  806. X    SGR    Sequences for ALL TERMINALS
  807. X    Sequence  |    Description   |     Maps to termcap
  808. X    ----------+---------------+-------------------------------
  809. X    ESC    [ 0 m |    normal          |     "se"+"me"+"ue"
  810. X    ESC    [ 1 m |    bold          |     "so"
  811. X    ESC    [ 4 m |    underscore    |     "us"
  812. X    ESC    [ 5 m |    blink          |     "mb" (XENIX extension)
  813. X    ESC    [ 7 m |    reverse    video |     "so"
  814. X
  815. X
  816. X
  817. X    2.6.2  Multiscreen Local Terminals
  818. X
  819. X    In addition    to the above, if you are operating from    a color    multiscreen,
  820. X    additional (SCO and    MS-DOS/ANSI.SYS) sequences are supported (see
  821. X    screen(HW)):
  822. X
  823. X
  824. X
  825. X
  826. X
  827. X
  828. X
  829. X
  830. X
  831. X
  832. X    Public Domain by wht@n4hgf                12/26/90
  833. X
  834. X
  835. X
  836. X
  837. X
  838. X
  839. X
  840. X    ECU    Technical Description                      12
  841. X
  842. X
  843. X
  844. X    Additional Multiscreen SGR Sequences
  845. X    Sequence    | Description  (no termcap mapping)
  846. X    ------------+-----------------------------------------------
  847. X    ESC    [ 8 m    | non-display
  848. X    ESC    [ 1 0 m    | select primary font
  849. X    ESC    [ 1 1 m    | select first alternate font (0x00-0x1F)
  850. X    ESC    [ 1 2 m    | select second    alternate font (0x80-0xFF)
  851. X    ESC    [ 3 0 m    | black    foreground
  852. X    ESC    [ 3 1 m    | red foreground
  853. X    ESC    [ 3 2 m    | green    foreground
  854. X    ESC    [ 3 3 m    | brown    foreground
  855. X    ESC    [ 3 4 m    | blue foreground
  856. X    ESC    [ 3 5 m    | magenta foreground
  857. X    ESC    [ 3 6 m    | cyan foreground
  858. X    ESC    [ 3 7 m    | white    foreground
  859. X    ESC    [ 3 8 m    | enables underline option
  860. X    ESC    [ 3 9 m    | disables underline option
  861. X    ESC    [ 4 0 m    | black    background
  862. X    ESC    [ 4 1 m    | red background
  863. X    ESC    [ 4 2 m    | green    background
  864. X    ESC    [ 4 3 m    | brown    background
  865. X    ESC    [ 4 4 m    | blue background
  866. X    ESC    [ 4 5 m    | magenta background
  867. X    ESC    [ 4 6 m    | cyan background
  868. X    ESC    [ 4 7 m    | white    background
  869. X
  870. X
  871. X
  872. X    ECU    also does it's best to interpret MS-DOS    "SGR gaggles" such as
  873. X
  874. X     ESC [ 5 ; 3 4 ; 4 7 m
  875. X
  876. X    which means    "set the terminal to white background with blue    blinking
  877. X    foreground."
  878. X
  879. X
  880. X    2.6.3  Character Mapping
  881. X
  882. X    The    MS-DOS ROM signal ruling characters from the following table are
  883. X    mapped after the fashion of:
  884. X
  885. X
  886. X       .-----+--------.
  887. X       |     |      |
  888. X       |     +--------+
  889. X       |     |      |
  890. X       +-----+      |
  891. X       |     |      |
  892. X       `-----+--------'
  893. X
  894. X
  895. X
  896. X
  897. X
  898. X    Public Domain by wht@n4hgf                12/26/90
  899. X
  900. X
  901. X
  902. X
  903. X
  904. X
  905. X
  906. X    ECU    Technical Description                      13
  907. X
  908. X
  909. X
  910. X    Mapped Characters (see pc_scr.h):
  911. X    Hex     | Description
  912. X    -----+---------------------------
  913. X    0xDA | top left single rule
  914. X    0xBF | top right single rule
  915. X    0xC0 | bottom left single rule
  916. X    0xD9 | bottom right    single rule
  917. X    0xC3 | left    hand T
  918. X    0xB4 | right hand T
  919. X    0xB3 | vertical rule
  920. X    0xC4 | horizontal rule
  921. X
  922. X
  923. X    (Due to momentary laziness on the part of the author, double ruling
  924. X    characters will appear as random druk, unless your terminal    is smart
  925. X    enough to have joined the Church of    the True-Blue ROM.  One    day an X
  926. X    version of this program will appear    and you    can choose to no longer
  927. X    accomplish real work, but may spend    your days editing 42Kb resource
  928. X    files which    will give you TAC, Total Anal Control, over all    this.)
  929. X
  930. X
  931. X    2.7     Line Editing
  932. X
  933. X
  934. X    When you are entering a line of text for an    ecu command or in a field on
  935. X    a screen, you may edit it in a number of ways at any time prior to
  936. X    pressing Enter.  Cursor Left moves the cursofr left    by one character
  937. X    position, nondestructively.     Cursor    Right moves to the right.  Insert
  938. X    toggles insert mode.  Backspace (your erase    key as specified to stty in
  939. X    commands, the actual backspace key in screens) deletes the character to
  940. X    the    left of    the cursor.  Your line kill key    (as specified to stty) in
  941. X    command mode or the    ^U character in    screen mode erases the entire line.
  942. X    Esc    in command mode    cancels    the command.  Esc in screen mode usually
  943. X    cancels the    screen or subfunction in a screen.  ^L or ^R in    interactive
  944. X    command mode shows the current state of Insert mode    and redisplays the
  945. X    edited string.
  946. X
  947. X
  948. X    2.8     Screen    Dump
  949. X
  950. X
  951. X    When the "cursor 5"    key is pressed,    the screen contents are    dumped to a
  952. X    file.  By default, this file is named '~/.ecu/screen.dump'.     The sdname
  953. X    interactive    command    either displays    or changes the current screen dump
  954. X    file name, depending upon whether or not a argument    is supplied.  The
  955. X    scrdump procedure command can initiate a dump.
  956. X
  957. X
  958. X    2.8.1  Multiscreen and Non-Multiscreen
  959. X    Note that from multiscreens, screen    dump produces a    dump of    the actual
  960. X    screen contents, including ECU-generated output.  When using a non-
  961. X
  962. X
  963. X
  964. X    Public Domain by wht@n4hgf                12/26/90
  965. X
  966. X
  967. X
  968. X
  969. X
  970. X
  971. X
  972. X    ECU    Technical Description                      14
  973. X
  974. X
  975. X
  976. X    multiscreen    terminal, screen dump dumps only the shared memory virtual
  977. X    screen as received from the    host.  If standard input is not    a serial
  978. X    line (xterm    o or /dev/null), screen    dumps will be of the non-multiscreen
  979. X    type.
  980. X
  981. X    If,    at a multiscreen, you wish a screen dump free of ECU output
  982. X    "pollution," use Shift-Tab (BkTab) to redraw the screen, then perform
  983. X    the    screen dump.
  984. X
  985. X
  986. X    2.8.2  Multiscreen Bug
  987. X    There has been a bug in the    multiscreen driver for some time wherein a
  988. X    MEDIA COPY (screen dump) sequence ("ESC [ 2    i") leaves the "ESC [ 2"
  989. X    part "active".  When a screen dump (Cursor 5) command is given, I do the
  990. X    sacreen dump, then send a "l" to the screen    to work    around the bug ("ESC
  991. X    2 [    l" unlocks the keyboard, essentially a no-op).    If and when it gets
  992. X    fixed, you'll see an "l" show up on    your screen after a screen dump
  993. X    sequence.  To fix this, comment out    the
  994. X
  995. X     #define MULTISCREEN_DUMP_BUG
  996. X
  997. X    at the top of ecuscrdump.c.
  998. X
  999. X
  1000. X    2.9     Interactive Command History
  1001. X
  1002. X
  1003. X    After pressing the Home key, pressing it again invokes the interactive
  1004. X    command history function.  After the second    Home key is pressed, the
  1005. X    last interactive command is    redisplayed. Line editing may be performed
  1006. X    on the command as described    in the previous    section.
  1007. X
  1008. X    Additionally, using    the Cursor Up key accesses less    recent commands.
  1009. X    The    Cursor Down key    accesses more recent commands.    Pressing Enter
  1010. X    causes the command to be executed.    Pressing Esc aborts command entry.
  1011. X
  1012. X
  1013. X    2.10  Dialing Directory
  1014. X
  1015. X
  1016. X    ECU    provides an on-line editable dialing directory.     Remote    systems    are
  1017. X    defined as records using alphanumeric identifiers as keys.    Other record
  1018. X    fields include telephone number, baud rate,    parity and textual
  1019. X    description.
  1020. X
  1021. X    Other features include changing to alternate dialing directory and a
  1022. X    multi-number redial    cycle function.    Refer below to the description of
  1023. X    the    interactive dial command.
  1024. X
  1025. X
  1026. X
  1027. X
  1028. X
  1029. X
  1030. X    Public Domain by wht@n4hgf                12/26/90
  1031. X
  1032. X
  1033. X
  1034. X
  1035. X
  1036. X
  1037. X
  1038. X    ECU    Technical Description                      15
  1039. X
  1040. X
  1041. X
  1042. X    2.11  Online Command Dictionary
  1043. X
  1044. X
  1045. X    The    ECU help command presents a display of interactive commands.  The
  1046. X    user is then prompted to enter a command name for further, Unix-style
  1047. X    "usage" information.
  1048. X
  1049. X
  1050. X    2.12  Multiscreen Event Alarm
  1051. X
  1052. X
  1053. X    By using the BN (bell notify) interactive command, an audible alert    is
  1054. X    sent to all    multiscreens when an ASCII BEL (bell) is received or when a
  1055. X    file transfer completes.  An additional option causes an alert when    ANY
  1056. X    data is received from the line.  This makes    it simple to do    work on
  1057. X    other multiscreen consoles and be alerted when attention to    the
  1058. X    communications session is required.
  1059. X
  1060. X    For    instance, the Berkeley 4.x Unix    utility    "talk" rings the bell when
  1061. X    another user wishes    an interactive chat mode.  BSD "biff" rings the    bell
  1062. X    when incoming mail is received.  Scripts or    commands at remote sites can
  1063. X    be configured to ring the bell as in:
  1064. X
  1065. X     make foo bar; bell; make more_stuff; bell;
  1066. X
  1067. X    to call attention to the ECU user when work    is being done on other
  1068. X    multiscreen    consoles.
  1069. X
  1070. X    This feature is only available when    you are    running    ECU from a
  1071. X    multiscreen.
  1072. X
  1073. X
  1074. X    2.13  Built-in Modem Dialer
  1075. X
  1076. X
  1077. X    The    built-in ECU dialer supports modems which use the Hayes-style AT
  1078. X    command set    or most    variants thereof.  It is used when HoneyDanBer UUCP
  1079. X    is not installed or    when there is no entry in the /usr/lib/uucp/Devices
  1080. X    file for the selected outgoing line.  (For more information, see the
  1081. X    later section titled "HoneyDanBer UUCP Interface".)
  1082. X
  1083. X    The    built-in dialer    uses files in the /usr/lib/ecu directory which
  1084. X    contains modem initialization information.    Modem initialization
  1085. X    filenames are made from concatenating the tty name with ".mi".  For
  1086. X    instance, tty1a's initialization file is named "tty1a.mi".
  1087. X
  1088. X    Commands for initializing the modem    and for    dialing    may be specified in
  1089. X    a very flexible manner.  Separate init and dial strings for    each legal
  1090. X    baud rate, a single    pair of    strings    for all    baud rates or a    combination
  1091. X    may    be specified.
  1092. X
  1093. X
  1094. X
  1095. X
  1096. X    Public Domain by wht@n4hgf                12/26/90
  1097. X
  1098. X
  1099. X
  1100. X
  1101. X
  1102. X
  1103. X
  1104. X    ECU    Technical Description                      16
  1105. X
  1106. X
  1107. X
  1108. X         Sample    Modem Initialization Files
  1109. X
  1110. X    #+-----------------------------------------------------------
  1111. X    #  tty1a.mi    - Microcom AX/9624c
  1112. X    #------------------------------------------------------------
  1113. X    init_>2400:ATS11=47X4S0=0S7=30Q1X1N3   # baud rates    > 2400
  1114. X    init_default:ATS11=47X4S0=0S7=30Q0X0N0 # other baud    rates
  1115. X    dial_default:ATDT
  1116. X
  1117. X
  1118. X    #+-----------------------------------------------------------
  1119. X    #  tty2d.mi    - USR Courier 2400
  1120. X    #------------------------------------------------------------
  1121. X    init_default:ATS11=47 X4 S0=0 S7=32
  1122. X    dial_default:ATDT
  1123. X
  1124. X
  1125. X    2.14  File Transfer
  1126. X
  1127. X
  1128. X    ECU    supports numerous file transfer    protocols: as of this writing,
  1129. X    XMODEM, XMODEM/CRC,    XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16,
  1130. X    ZMODEM/CRC-32, and Kermit are supported.  Although a seamless interface
  1131. X    (there's some yuppie marketing newspeak) is    provided to the    user,
  1132. X    transfer is    facilitated by executing external programs.
  1133. X
  1134. X    As of this writing SEAlink is not in the best of health (no    one has
  1135. X    complained :-).
  1136. X
  1137. X    Kermit support required you    to obtain and patch C-Kermit 4E.  The patch
  1138. X    information    is available in    the ckermit subdirectory of the    release.  As
  1139. X    soon as C-Kermit 5 is stable and released by Columbia, a suitable patch
  1140. X    will be developed for it.  It is quite possible no patching    will be
  1141. X    necessary.
  1142. X
  1143. X    XMODEM, YMODEM and ZMODEM transfers    (thanks    to modified public domain
  1144. X    programs by    Chuck Forsberg)    present    dynamic    status displays    similar    to
  1145. X    the    following:
  1146. X
  1147. X
  1148. X
  1149. X
  1150. X
  1151. X
  1152. X
  1153. X
  1154. X
  1155. X
  1156. X
  1157. X
  1158. X
  1159. X
  1160. X
  1161. X
  1162. X    Public Domain by wht@n4hgf                12/26/90
  1163. X
  1164. X
  1165. X
  1166. X
  1167. X
  1168. X
  1169. X
  1170. X    ECU    Technical Description                      17
  1171. X
  1172. X
  1173. X
  1174. X    .-[ ecusz 2.37 ]-- /tmp    -----------------------------------.
  1175. X    |  ZMODEM/CRC32     Data xfer rate    ~=    896 chars/sec       |
  1176. X    |  File      1 of     1: ckermit-5a-130               |
  1177. X    |  File    position:     34053 length:    34053  -rw-r--r--   |
  1178. X    |  Sending 34053 bytes    total time ~=  0:40           |
  1179. X    |  tx: hdr ZFIN     0           rx: hdr ZFIN  0           |
  1180. X    |  Comm    I/O: rx         175  tx    34393 bytes           |
  1181. X    |  Baud    rate:  9600 BINARY blklen:  1024 comm mode: NORMAL |
  1182. X    |  Time:     started: 17:31:50  this file: 17:31:51       |
  1183. X    |  17:32:29     elapsed: 00:00:39           00:00:38       |
  1184. X    |  Errors: this    file:    0 total:    0 files skipped:   0   |
  1185. X    |  Total file bytes transferred: 34053               |
  1186. X    |  End of file                           |
  1187. X    |  Remote: CRC32 y  duplex y  continuous stream    y       |
  1188. X    `- Connected to    ki4xo -    procedure put_ck5a ----------------'
  1189. X
  1190. X
  1191. X
  1192. X    2.15  Procedures (Scripts)
  1193. X
  1194. X
  1195. X    A powerful,    language-style procedure language is incorporated into ECU.
  1196. X    The    language is described in later sections.
  1197. X
  1198. X
  1199. X    2.16  Initial (Startup) Procedure
  1200. X
  1201. X
  1202. X    An initial procedure may be    be specified to    ECU either to initialize an
  1203. X    interactive    session    or to execute an entirely unattended or    "batch"
  1204. X    communication session.
  1205. X
  1206. X
  1207. X
  1208. X    2.17  Home Directory Files
  1209. X
  1210. X
  1211. X    ECU    control    files reside in    the .ecu subdirectory of each user's home
  1212. X    directory.    For example, in    home directory /usr/wht:
  1213. X
  1214. X     /usr/wht/.ecu/dir          CD interactive command history file
  1215. X     /usr/wht/.ecu/keys          function key mapping
  1216. X     /usr/wht/.ecu/nonansikeys    function key mapping
  1217. X     /usr/wht/.ecu/log          connect, file transfer history
  1218. X     /usr/wht/.ecu/phone          default dialing directory
  1219. X     /usr/wht/.ecu/colors          colors used by ECU
  1220. X
  1221. X
  1222. X    The    .ecu directory is also searched    for ECU    procedure files    (having    the
  1223. X    '.ep' extension) in    the procedure cannot be    found in the current working
  1224. X    directory.
  1225. X
  1226. X
  1227. X
  1228. X    Public Domain by wht@n4hgf                12/26/90
  1229. X
  1230. X
  1231. X
  1232. X
  1233. X
  1234. X
  1235. X
  1236. X    ECU    Technical Description                      18
  1237. X
  1238. X
  1239. X
  1240. X    2.18  Lock Files
  1241. X
  1242. X
  1243. X    ECU    maintains lock files in    /usr/spool/uucp    in accordance with the
  1244. X    HoneyDanBer    UUCP conventions (ASCII    pids as    10-character strings
  1245. X    followed by    a newline).  Lock files    are created for    the lower-case
  1246. X    device names of a line and checked for in both cases. For example, both
  1247. X    LCK..tty1a is created when /dev/tty1a OR /dev/tty1A    is selected and
  1248. X    neither LCK..tty1a nor LCK..tty1A are active.  See the later section
  1249. X    titled "HoneyDanBer    UUCP Interface".
  1250. X
  1251. X
  1252. X    2.19  Dial-In/Dial-Out Line    Support
  1253. X
  1254. X
  1255. X    ECU    works with the SCO getty to support dialing out    on a line enabled
  1256. X    for    login.    After use of the line is complete, ECU signals the system to
  1257. X    restore incoming call status to the    line.  See the later section titled
  1258. X    "HoneyDanBer UUCP Interface".
  1259. X
  1260. X
  1261. X    2.20  Tools
  1262. X
  1263. X
  1264. X    Commands are provided for conversion of hexadecimal    or decimal numbers
  1265. X    to and from    ASCII equivalents.  For    example, 26(10)    == 0x1a    == ^Z ==
  1266. X    SUB.  For details, refer to    the description    of the XA and AX interactive
  1267. X    commands.
  1268. X
  1269. X
  1270. X    2.21  Shared Memory    'Friend' Interface
  1271. X
  1272. X
  1273. X    ECU    maintains a copy of the    received screen    image (80 x 43 maximum)    and
  1274. X    other information in its shared memory segment.  Normally, this
  1275. X    information    is used    only by    the transmitter    and receiver process.
  1276. X    However,  ECU supports the concept of a friend process which may access
  1277. X    the    shared memory segment, perform arbitrary auxiliary operations, read
  1278. X    from and write to the attached communications line and communicate
  1279. X    resulting information or status to an ECU procedure    via a 1024-byte
  1280. X    "friend" data area in the shared memory segment.
  1281. X
  1282. X    The    procedure language supports the    friend process concept through
  1283. X    commands and functions which allow
  1284. X
  1285. X       + passing the ECU shared    memory segment id (%shmid) to a    called
  1286. X     program,
  1287. X
  1288. X       + reading a single character or string of characters from screen
  1289. X     memory,
  1290. X
  1291. X
  1292. X
  1293. X
  1294. X    Public Domain by wht@n4hgf                12/26/90
  1295. X
  1296. X
  1297. X
  1298. X
  1299. X
  1300. X
  1301. X
  1302. X    ECU    Technical Description                      19
  1303. X
  1304. X
  1305. X
  1306. X       + reading cursor    position information and
  1307. X
  1308. X       + reading and writing of    characters, short or long integers and
  1309. X     strings in the    1024-byte "friend" shared memory data area.
  1310. X
  1311. X    The    algorithm for obtaining    the shared memory segment key is
  1312. X
  1313. X    0xEC000000L    + transmitter process id
  1314. X
  1315. X    Thus a "friend" process may    either use a %shmid shared memory key passed
  1316. X    as an argument or obtain the shared    memory key by using:
  1317. X
  1318. X    key_t shmkey = 0xEC000000L | getppid();
  1319. X
  1320. X
  1321. X    This facility allows batch and interactive applications to be developed
  1322. X    with C programs which would    be tedious or impractical to implement with
  1323. X    procedure language alone.
  1324. X
  1325. X    For    more information, refer    to the shared memory header file ecushm.h,
  1326. X    the    ecufriend subdirectory of the software release and to the
  1327. X    description    of the %shmid, %cury and %curx procedure functions and the
  1328. X    getf and putf procedure commands.
  1329. X
  1330. X
  1331. X
  1332. X
  1333. X
  1334. X
  1335. X
  1336. X
  1337. X
  1338. X
  1339. X
  1340. X
  1341. X
  1342. X
  1343. X
  1344. X
  1345. X
  1346. X
  1347. X
  1348. X
  1349. X
  1350. X
  1351. X
  1352. X
  1353. X
  1354. X
  1355. X
  1356. X
  1357. X
  1358. X
  1359. X
  1360. X    Public Domain by wht@n4hgf                12/26/90
  1361. X
  1362. X
  1363. X
  1364. X
  1365. X
  1366. X
  1367. X
  1368. X    ECU    Technical Description                      20
  1369. X
  1370. X
  1371. X
  1372. X    3.    Starting the Program
  1373. X
  1374. X
  1375. X
  1376. X    3.1     Simple    Startup    - Initial Setup    Menu
  1377. X
  1378. X
  1379. X    ECU    may be started in a number of ways through use of command line
  1380. X    switches, but the easiest is to enter
  1381. X
  1382. X     ecu
  1383. X
  1384. X    by itself.    In this    case, the screen is cleared and    the folowing screen
  1385. X    will be presented.
  1386. X
  1387. X
  1388. X
  1389. X
  1390. X      .--[ ecu 1.96 Copyright 1986,1989, W. Tucker ]-----------------.
  1391. X      |                                     |
  1392. X      |     Name/phone number to call: ___________________             |
  1393. X      |                                     |
  1394. X      |                                     |
  1395. X      |     tty: /dev/tty1a                         |
  1396. X      |                                     |
  1397. X      |     duplex: F  baud: 2400     parity:N  (data bits 8)         |
  1398. X      |     Add NL    to transmitted CR: N                     |
  1399. X      |     Add NL    to received CR:       N                     |
  1400. X      |                                     |
  1401. X      |                                     |
  1402. X      |      TAB:next ^B:prev END:proceed ^D:phone    dir  ESC:quit ecu    |
  1403. X      `- logical phone directory entry,    phone number or    empty -------'
  1404. X
  1405. X
  1406. X
  1407. X
  1408. X
  1409. X    3.1.1  Name/Phone Number Field
  1410. X
  1411. X    If a dialing directory has been configured,    a literal phone    number need
  1412. X    not    be entered.  However, on your first invocation,     you'll    very likely
  1413. X    have no directory.    Therefore, you have three options:
  1414. X
  1415. X
  1416. X
  1417. X
  1418. X
  1419. X
  1420. X
  1421. X
  1422. X
  1423. X
  1424. X
  1425. X
  1426. X    Public Domain by wht@n4hgf                12/26/90
  1427. X
  1428. X
  1429. X
  1430. X
  1431. X
  1432. X
  1433. X
  1434. X    ECU    Technical Description                      21
  1435. X
  1436. X
  1437. X
  1438. X     1.  Enter a literal telephone number, (e.g. 18005551212).
  1439. X         Hyphens and open and close    parentheses may    also
  1440. X         be    entered.
  1441. X
  1442. X     2.  Press ENTER to skip the 'Name/phone' field    and enter
  1443. X         ^D    to enter the telephone directory to enter your
  1444. X         first directory entry.
  1445. X
  1446. X     3.  Press END to enter    interactive mode and use the Dial
  1447. X         interactive command to dial a literal telephone num-
  1448. X         ber or to enter the dialing directory.
  1449. X
  1450. X
  1451. X
  1452. X    3.1.2  Other Fields
  1453. X
  1454. X    The    'tty' field may    be used    to select an outgoing line other than the
  1455. X    default /dev/tty1a.     Note:    only the last two characters of    the tty    name
  1456. X    need be entered.  The remainder of the tty name is assumed to be
  1457. X    '/dev/tty'.
  1458. X
  1459. X    The    'duplex' field may be used to select a duplex value other than the
  1460. X    default 'F'    (full).
  1461. X
  1462. X    The    'baud' field may be used to select a baud rate value other than    the
  1463. X    default 2400.
  1464. X
  1465. X    The    'parity' field may be used to select a parity value other than the
  1466. X    default 'N'    (none).
  1467. X
  1468. X
  1469. X    The    'Add NL    to transmitted CR' and 'Add NL to received CR' fields are
  1470. X    usually left defaulted to 'N' (no).     If you    will be    communicating with a
  1471. X    terminal (with a human), you will usually need to set both of these
  1472. X    fields to 'Y' as well as to    select 'H'alf duplex.
  1473. X
  1474. X
  1475. X    3.1.3  Special Characters
  1476. X
  1477. X    Special keyboard characters    while filling in the startup screen are:
  1478. X
  1479. X
  1480. X
  1481. X
  1482. X
  1483. X
  1484. X
  1485. X
  1486. X
  1487. X
  1488. X
  1489. X
  1490. X
  1491. X
  1492. X    Public Domain by wht@n4hgf                12/26/90
  1493. X
  1494. X
  1495. X
  1496. X
  1497. X
  1498. X
  1499. X
  1500. X    ECU    Technical Description                      22
  1501. X
  1502. X
  1503. X
  1504. X      TAB     move to next field ...    if nothing typed in
  1505. X         the field, do not disturb contents
  1506. X
  1507. X      ^B     back up to previous field
  1508. X
  1509. X      END     proceed with session, dialing remote if
  1510. X         logical directory entry name or literal
  1511. X         telephone number enetered
  1512. X
  1513. X      ^D     enter phone directory
  1514. X
  1515. X      ESC     quit ecu without any communications
  1516. X
  1517. X
  1518. X
  1519. X    3.2     Command Line Arguments    and Switches
  1520. X
  1521. X
  1522. X    ECU    can be started in a number of ways:
  1523. X
  1524. X
  1525. X     ecu [-lxx] [-b<baud>] [-h] [-e|-o] [-t] <tel-number>
  1526. X     ecu [-lxx] [-b<baud>] [-h] [-e|-o] [-t]
  1527. X     ecu [-t] [-h] <logical>
  1528. X     ecu [-lxx] [-b<baud>] [-h] [-e|-o] [-d] [-D] -p <proc>    [<arg> ...]
  1529. X
  1530. X
  1531. X
  1532. X    3.2.1  Non-Switch Arguments
  1533. X
  1534. X    Only one type of non-switch    argument may be    used on    the command line.
  1535. X    <tel-number> or <logical> may appear when the -p switch is absent.    One
  1536. X    or more <arg> arguments may    appear when the    -p switch is used.
  1537. X
  1538. X
  1539. X    3.2.2  <tel-number>
  1540. X
  1541. X    This type of argument has a    digit as its initial character and
  1542. X    represents an actual telephone number to be    passed to a modem dialer
  1543. X    program or Dialers chat script.  The string    may contain non-numeric
  1544. X    characters if appropriate for a dialer program, such as dialTBIT.  For
  1545. X    example:
  1546. X
  1547. X    ecu -l/dev/tty2a -b 19200 -e 5551212UC
  1548. X
  1549. X    uses tty2a (assumed    to be connected    to a Trailblazer modem)    and
  1550. X    establishes    a 19200    baud, even parity PEP Compressed connection after
  1551. X    dialing 5551212.
  1552. X
  1553. X
  1554. X
  1555. X
  1556. X
  1557. X
  1558. X    Public Domain by wht@n4hgf                12/26/90
  1559. X
  1560. X
  1561. X
  1562. X
  1563. X
  1564. X
  1565. X
  1566. X    ECU    Technical Description                      23
  1567. X
  1568. X
  1569. X
  1570. X    3.2.3  <logical>
  1571. X
  1572. X    This type of argument has an alphabetic initial character and causes the
  1573. X    dialing directory entry by that name to be dialed.    The line may be
  1574. X    specified by '-l', but if the dialing directory specifies a    line (tty
  1575. X    field contaions other than 'Any'), the dialing directory entry will
  1576. X    override it.  The '-b', '-e' and '-o' switches are ignored;    the values
  1577. X    specified by the dialing directory entry are used.    The '-t' and '-h'
  1578. X    switches are valid and honored if present.
  1579. X
  1580. X
  1581. X    3.2.4  <arg>
  1582. X
  1583. X    This type of argument is passed to an initial procedure when the -p
  1584. X    switch is present.
  1585. X
  1586. X
  1587. X    ecu    -p unixlogin user pwd ansi43
  1588. X
  1589. X    executes unixlogin.ep with arguments 'user'    'pwd' 'ansi43'
  1590. X
  1591. X    For    more detail, refer to the description of -p, -d    and -D below.
  1592. X
  1593. X
  1594. X    3.2.5  -l
  1595. X
  1596. X    When ECU starts up,    it normally chooses a line as described    later in the
  1597. X    section titled "Choosing a Dialout Line".  Specifying the -l switch    can
  1598. X    suggest that the program choose a specific line.  The argument to the
  1599. X    switch is the last two charcters of    the ttyname; e.g., "-l1a".
  1600. X
  1601. X    On a system    with HoneyDanBerr UUCP,    to access a device which does not
  1602. X    appear in the Devices file,    it may be necessary to explicitly specify
  1603. X    the    device with -l.
  1604. X
  1605. X
  1606. X    3.2.6  -f
  1607. X    Normally, ECU starts up in the full    duplex mode.  If half duplex is
  1608. X    desired, the -f switch is used.
  1609. X
  1610. X
  1611. X    3.2.7  -e, -o
  1612. X
  1613. X    Normally, ECU starts up with 8 data    bits and no parity.  If    even parity
  1614. X    is desired,    the -e switch is specified.  If    odd parity is desired, the
  1615. X    -o switch is specified.
  1616. X
  1617. X    These switches
  1618. X
  1619. X
  1620. X
  1621. X
  1622. X
  1623. X
  1624. X    Public Domain by wht@n4hgf                12/26/90
  1625. X
  1626. X
  1627. X
  1628. X
  1629. X
  1630. X
  1631. X
  1632. X    ECU    Technical Description                      24
  1633. X
  1634. X
  1635. X
  1636. X    3.2.8  -p <procname>
  1637. X
  1638. X    The    -p switch causes ECU to    execute    the procedure <procname>
  1639. X    ("<procname>.ep") immediately.  Such a procedure is    termed the initial
  1640. X    procedure.    All non-switch arguments after <procname> are passed as
  1641. X    arguments to the initial procedure (see the    descriptions of    the integer
  1642. X    function %argc and the string function %argv).
  1643. X
  1644. X
  1645. X    3.2.9  -d
  1646. X
  1647. X    The    -d switch instructs ECU    to "die" (terminate with error status) if an
  1648. X    initial procedure (-p) fails.  This    switch ensures a batch ECU execution
  1649. X    will hang up any connection    and terminate if a procedure error occurs.
  1650. X    See    also -D    below.
  1651. X
  1652. X    Absence of the -d and -D switches causes ecu (upon any completion of the
  1653. X    initial procedure) to enter    the 1) interactive mode    if a line was
  1654. X    successfully attached by the procedure or 2) the setup menu    if no line
  1655. X    was    attached.
  1656. X
  1657. X
  1658. X    3.2.10  -D
  1659. X
  1660. X    The    -D switch instructs ECU    to unconditionally terminate when an initial
  1661. X    procedure finishes.
  1662. X
  1663. X
  1664. X    3.2.11  -t
  1665. X
  1666. X    The    -t switch instructs ECU    to map incoming    and outgoing carriage
  1667. X    returns to carriage    return/line feed pairs.     This is helpful if the
  1668. X    remote connection will be to a terminal with a human operator.  Use    of
  1669. X    the    -h switch is probably also necessary.
  1670. X
  1671. X
  1672. X    3.2.12  -A
  1673. X
  1674. X    Normally, ECU reads    the terminal type (TERM    environment variable) to
  1675. X    determine whether or not a terminal    is "ANSI"-like or not.    -A forces
  1676. X    ECU    to treat the terminal as an ANSI terminal, regardless of the
  1677. X    contents of    the $TERM string.
  1678. X
  1679. X
  1680. X    3.2.13  -N
  1681. X
  1682. X    This switch    forces ECU to treat the    terminal as a non-ANSI terminal.  It
  1683. X    has    the opposite effect of -A.  You    must have a valid function key
  1684. X    recognition    entry for the $TERM type if this switch    is used.
  1685. X
  1686. X
  1687. X
  1688. X
  1689. X
  1690. X    Public Domain by wht@n4hgf                12/26/90
  1691. X
  1692. X
  1693. X
  1694. X
  1695. X
  1696. X
  1697. X
  1698. X    ECU    Technical Description                      25
  1699. X
  1700. X
  1701. X
  1702. X    3.3     Environment Variables
  1703. X
  1704. X
  1705. X    Prior to starting ECU, it is useful, but not necessary, to establish two
  1706. X    environment    variables, ECUPROMPT and ECUHELP.
  1707. X
  1708. X
  1709. X    3.3.1  ECUPROMPT
  1710. X
  1711. X    The    ECUPROMPT environment variable determines the prompt printed by    ECU
  1712. X    when the interactive command key ("HOME") is pressed.  When    you first
  1713. X    run    ECU, try setting it to your name, e. g.,
  1714. X
  1715. X     setenv    ECUPROMPT Ralph       if you use csh
  1716. X
  1717. X     ECUPROMPT=Ralph       if you use sh, ksh, etc.
  1718. X     export    ECUPROMPT
  1719. X
  1720. X    Then, when you see how it used, you    may wish to establish a    more
  1721. X    permanent choice in    your .login or .profile.
  1722. X
  1723. X
  1724. X    3.3.2  ECUHELP
  1725. X
  1726. X    Ordinarily,    ECU looks for interactive command help information in
  1727. X    "/usr/lib/ecu/ecuhelp.data".  The ECUHELP environment may be set to    the
  1728. X    complete pathname of the ecu help file if an alternate file    is to be
  1729. X    used.
  1730. X
  1731. X    The    help file is explained later in    the section titled "Online Command
  1732. X    Dictionary".
  1733. X
  1734. X
  1735. X
  1736. X
  1737. X
  1738. X
  1739. X
  1740. X
  1741. X
  1742. X
  1743. X
  1744. X
  1745. X
  1746. X
  1747. X
  1748. X
  1749. X
  1750. X
  1751. X
  1752. X
  1753. X
  1754. X
  1755. X
  1756. X    Public Domain by wht@n4hgf                12/26/90
  1757. X
  1758. X
  1759. X
  1760. X
  1761. X
  1762. X
  1763. X
  1764. X    ECU    Technical Description                      26
  1765. X
  1766. X
  1767. X
  1768. X    4.    Interactive Mode Commands
  1769. X
  1770. X
  1771. X    The    following is a partial list of commands    available in the interactive
  1772. X    (non-procedure) mode.  It is not necessary to to enter the entire
  1773. X    command in most cases.  The    portion    of each    command    which must be
  1774. X    entered is capitalized in the following section headers.
  1775. X
  1776. X    Refer to the sections titled Interactive Command History and Line
  1777. X    Editing for    more information.
  1778. X
  1779. X
  1780. X    4.1     AX : ascii char to hex/oct/dec
  1781. X
  1782. X    usage: ax [<param>]
  1783. X
  1784. X
  1785. X    <param> may    be a single ASCII character, a standard    ASCII identifier
  1786. X    (such as ETX), or a    two-character control character    identifier (such as
  1787. X    ^C,    typed as a caret followed by a C).
  1788. X
  1789. X    If no argument is supplied,    a table    of control characters is printed
  1790. X    containing decimal,    octal, hex, ASCII identifiers and two-character
  1791. X    control character identifier.
  1792. X
  1793. X
  1794. X
  1795. X    4.2     BAud :    set/display line baud rate
  1796. X
  1797. X    usage: baud    [<baud-rate>]
  1798. X
  1799. X
  1800. X    <baud-rate>, if specified, must be taken from the values 110, 300, 600,
  1801. X    1200, 2400,    4800, 9600, 19200 and 38400.  On some systems, 19200 and
  1802. X    38400 may not be supported.     If baud rate 110 is selected, 2 stop bits
  1803. X    are    automatically specified; other baud rates set 1    stop bit.  If
  1804. X    <baud-rate>    is not supplied, the current baud rate is displayed.
  1805. X
  1806. X    The    setting    may be automatically changed as    the result of a    'dial'
  1807. X    command.  See also the dial    and parity command descriptions.
  1808. X
  1809. X
  1810. X
  1811. X    4.3     BN : all console event    alarm
  1812. X
  1813. X    usage: bn [    0 | 1 |    2 ]
  1814. X
  1815. X
  1816. X    "bell notify": If no argument is supplied, the current setting is
  1817. X    displayed.    Specifying 0 disables the facility; 1 causes an    audible
  1818. X    alarm to be    sounded    on all of the XENIX virtual consoles upon receipt of
  1819. X
  1820. X
  1821. X
  1822. X    Public Domain by wht@n4hgf                12/26/90
  1823. X
  1824. X
  1825. X
  1826. X
  1827. X
  1828. X
  1829. X
  1830. X    ECU    Technical Description                      27
  1831. X
  1832. X
  1833. X
  1834. X    a bell (0x07) character from the remote system; 2 causes an    audible
  1835. X    alarm to be    sent to    all consoles upon receipt of ANY characters from the
  1836. X    remote system.  A non-zero value also causes an audible alarm to be    sent
  1837. X    to all console upon    the successful completion of a 'redial'    command
  1838. X    which must retry more than one redial attempt or upon completion of    a
  1839. X    file transfer operation.
  1840. X
  1841. X    Different alarms are sent depending    upon the the type of event causing
  1842. X    the    alarms.
  1843. X
  1844. X    BN is set to 1 when    ECU begins executing.
  1845. X
  1846. X    The    setting    of this    command    has no effect if ECU is    not run    from a
  1847. X    multiscreen.
  1848. X
  1849. X
  1850. X    4.4     BReak : send break to remote
  1851. X
  1852. X    usage: break
  1853. X
  1854. X
  1855. X    This command sends a break signal to the remote system.
  1856. X
  1857. X
  1858. X
  1859. X    4.5     CD : change current directory
  1860. X
  1861. X    usage: cd [<dir-path>]
  1862. X
  1863. X
  1864. X    This command allows    you to change the working directory of the ECU
  1865. X    process.  If <dir-path> is supplied, the previous working directory    is
  1866. X    displayed, and <dir-path> is made the new working directory.  A history
  1867. X    of previous    directory changes is maintained.  Entering the cd command
  1868. X    shows the numbered history list and    allows you to select a new directory
  1869. X    by entering    the number.  Other commands allow deletion of directories
  1870. X    from the list or saving the    list to    file ~/.ecu/phone.  This file is
  1871. X    automatically read at ECU startup, providing a convenient list of
  1872. X    directories    available for quick selection.
  1873. X
  1874. X
  1875. X
  1876. X    4.6     DA : decimal to ascii char
  1877. X
  1878. X    usage: da [<decimal-val>]
  1879. X
  1880. X
  1881. X    <decimal-val> is a decimal value between 0 and 0377; the parity (sign)
  1882. X    bit    is stripped and    the equivalent ASCII character value is    displayed.
  1883. X
  1884. X    If no argument is supplied,    a table    of control characters is printed
  1885. X
  1886. X
  1887. X
  1888. X    Public Domain by wht@n4hgf                12/26/90
  1889. X
  1890. X
  1891. X
  1892. X
  1893. X
  1894. X
  1895. X
  1896. X    ECU    Technical Description                      28
  1897. X
  1898. X
  1899. X
  1900. X    containing decimal,    octal, hex, ASCII identifiers and two-character
  1901. X    control character identifier.
  1902. X
  1903. X
  1904. X
  1905. X    4.7     Dial :    dial remote destination
  1906. X
  1907. X    usage: dial    [<dial-param>]
  1908. X
  1909. X
  1910. X    <dial-param> may take one of two forms, a telephone    number to dial or a
  1911. X    logical name which can be found in the user    phone directory    (in file
  1912. X    ~/.ecu/phone).
  1913. X
  1914. X    If a telephone number is supplied, the phone number    is dialed; you must
  1915. X    first have set the desired baud rate and parity using the baud and
  1916. X    parity commands.
  1917. X
  1918. X    If a logical name is entered, the phone directory is searched; if the
  1919. X    entry is found, the    baud rate and parity is    automatically set.  If a
  1920. X    procedure file can be found    in the current directory or the    users home
  1921. X    .ECU subdirectory whose name matches the logical name, then    the
  1922. X    procedure is executed with the argument '!INTERACTIVE'.
  1923. X
  1924. X    If <dial-param> is not supplied, then a screen-oriented self-documenting
  1925. X    <:-)> directory manager is executed; you may scan the the directory    to
  1926. X    select a number to dial, as    well as    add, remove and    edit entries.
  1927. X
  1928. X    4.7.1  Alternate Dialing Directory
  1929. X
  1930. X    The    default    dialing    directory is ~/.ecu/phone.  You    may change to
  1931. X    another directory by issuing the interactive dial command with no
  1932. X    arguments to enter the dialing directory menu, selecting 'c'hange dial
  1933. X    directory, and entering the    name of    a new directory.  The specified
  1934. X    pathname must either be a fully qualified pathname or a pathname
  1935. X    relative to    the current working directory.    Once an    alternate directory
  1936. X    has    been selected, it will be used by both the interactive command 'dial
  1937. X    <logical>' and the dialing directory menu.
  1938. X
  1939. X    See    the section below titled "Choosing a Dialout Line" for more
  1940. X    information    on using "Any" in the "tty" field of a directory entry.
  1941. X
  1942. X
  1943. X    4.7.2  Multi-Number    Redial Cycle
  1944. X
  1945. X    While in the  dialing directory, you may "mark" one    or more    entries    for
  1946. X    a cyclical redial attempt.    When any entry is marked, typing ENTER
  1947. X    (carriage return or    line feed/newline) causes each marked entry to be
  1948. X    dialed in turn until one of    the remote systems is successfully
  1949. X    connected.    When a successful connection occurs, ECU unmarks the
  1950. X    associated entry, leaving the others marked.  Thus,    you may    mark several
  1951. X
  1952. X
  1953. X
  1954. X    Public Domain by wht@n4hgf                12/26/90
  1955. X
  1956. X
  1957. X
  1958. X
  1959. X
  1960. X
  1961. X
  1962. X    ECU    Technical Description                      29
  1963. X
  1964. X
  1965. X
  1966. X    entries and    merely reenter the dialing directory after each    connection
  1967. X    is finished    and press ENTER    to reenter the redial cycle.  If a single
  1968. X    entry is marked, ECU pauses    15 seconds between each    dialing    attempt,
  1969. X    otherwise 5    seconds.  Presing 'c' will cause the pause to be prematurely
  1970. X    terminated and the next attempt to be made.     Pressing your interrupt key
  1971. X    (DEL, ^C or    whatever) aborts the cycle.  If    you interrupt an active
  1972. X    dialing attempt, you will be prompted as to    whether    or not you wish    to
  1973. SHAR_EOF
  1974. true || echo 'restore of doc/ecu.man failed'
  1975. echo 'End of ecuman3 part 1'
  1976. echo 'File doc/ecu.man is continued in part 2'
  1977. echo 2 > _shar_seq_.tmp
  1978. exit 0
  1979. --------------------------------------------------------------------
  1980. Warren Tucker, TuckerWare emory!n4hgf!wht or wht@n4hgf.Mt-Park.GA.US
  1981. Hacker Extraordinaire  d' async PADs,  pods,  proteins and protocols
  1982.  
  1983. exit 0 # Just in case...
  1984. -- 
  1985. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1986. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1987. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1988. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1989.