wht@n4hgf (Warren Tucker) (01/05/91)
Submitted-by: Warren Tucker <wht@n4hgf> Posting-number: Volume 16, Issue 22 Archive-name: ecuman3/part01 ---- Cut Here and feed the following to sh ---- #!/bin/sh # This is ecuman3, a shell archive (shar 3.46) # made 12/26/1990 10:30 UTC by wht%n4hgf@gatech.ecu # Source directory /u1/src/ecu # # existing files WILL be overwritten # # This is part 1 of a multipart archive # do not concatenate these parts, unpack them in order with /bin/sh # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 119841 -rw-r--r-- doc/ecu.man # if touch 2>&1 | fgrep 'amc' > /dev/null then TOUCH=touch else TOUCH=true fi if test -r _shar_seq_.tmp; then echo 'Must unpack archives in sequence!' echo Please unpack part `cat _shar_seq_.tmp` next exit 1 fi # ============= doc/ecu.man ============== if test ! -d 'doc'; then echo 'x - creating directory doc' mkdir 'doc' fi echo 'x - extracting doc/ecu.man (Text)' sed 's/^X//' << 'SHAR_EOF' > 'doc/ecu.man' && X X X X - 1 - X X X X ECU 3.00 X X (Extended Call Utility) X X X X X X X Personal Communications Package X for XENIX System V X X X X X X X X X X X X X Warren H. Tucker, III <wht@n4hgf.Mt-Park.GA.US> X X X X X X X Technical Description X Revision 3.00 X 12/26/90 X X X X X X X X X X X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 1 X X X X 1. Introduction X X X ECU (Extended Call Utility) is a personal communications program for X users of SCO UNIX V.3.2/386 and XENIX V on 80286 and 80386 systems. X This preliminary document describes ECU functionality and implementation X from a technical point of view. X X ECU provides the classic terminal communications facility of passing X keyboard data to a serial line and incoming data to the computer video X display. In addition, a dialing directory, a function key mapping X feature, and session logging are available. X X A very flexible procedure (script) language is also incorporated to X automate many communications tasks. Using shell scripts and ECU X procedures, it is possible to use ECU in an entirely "unattended" X fashion for batch-style communications sessions. X X ECU presents to the host a flexible "ANSI" terminal type, accepting any X valid video control sequences from MS-DOS or SCO documentation as of X late 1990. It also fares well, though imperfectly, with Sun and VT-100 X in-band video control sequences. Standards are great: everybody should X have one, especially if they call it "ANSI." For more information, refer X to the section below titled "ANSI Filter." X X The program supports almost any local terminal (console) which can be X described in a termcap database entry. For more information, refer to X "Supported Terminals." X X ECU supports numerous file transfer protocols: as of this writing, X XMODEM, XMODEM/CRC, XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16, X ZMODEM/CRC-32, Kermit and SEAlink are supported. For more information, X refer to the sections describing the individual interactive and X procedure file transfer commands. X X This document is better than that supplied with ECU 2.0, but is still X rough in many places. It attempts to get across to the inquiring mind X how ECU works. In places, an understanding of the UNIX programming X model, UNIX, XENIX and UUCP constructs and asynchronous communications X techniques is assumed. In other places, the document goes into tedious X detail about the simplest of concepts. A great deal of attention has X been placed in accurate and robust coding of the program. Perhaps, time X permitting, one day I can say the same for this document. X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 2 X X X X 2. Basic Organization X X X ECU forks to run as two separate processes, a transmitter (XMTR) and a X receiver (RCVR). The two processes communicate via signals and a System X V shared memory segment. XMTR controls RCVR and terminates it under X certain circumstances, called here auxiliary operations. After an X auxiliary operation completes, XMTR forks again to recreate RCVR. X X X 2.1 Transmitter Process (XMTR) X X X XMTR accepts user input from the computer keyboard; input is recognized X as belonging to one of two types: 1) transmit data and 2) ECU commands. X Keyboard input is passed to the serial line driver until an ECU command X is detected. Commands are prefixed with a HOME key which causes ECU to X accept keyboard data up to the next ENTER key as command text. After a X command has been processed, keyed data is again routed to the serial X line. X X X 2.1.1 Keyboard Interface X X The keyboard driver is set into the raw mode. XMTR reads characters one X at a time from the driver. Normally, characters read from the keyboard X are passed directly to the serial line driver. The ASCII ESC ("escape") X character is handled as a special case. When a function key is pressed, X the keyboard generates to XMTR an ESC character, followed by more X characters describing which function key has been pressed. Pressing the X ESC key also causes XMTR to see an ESC character, but with no subsequent X function key "suffix". X X When an ESC character is read, XMTR delays transmission of the character X to the line for a short period to determine whether the ESC key has been X pressed or a function key has been pressed. If no "suffix" is detected, X the ESC is passed to the line, having suffered an insignificant delay X given human typing speeds. X X If a function key "suffix" is detected, the function key type is X decoded. The HOME key indicates an ECU command follows. Any other X function key is passed to the function key mapping feature (described X later). X X X 2.1.2 ECU Command Assembly X X After HOME has been pressed, XMTR presents a reverse video prompt on the X display, indicating its readiness to accept a command. During input, X the command may be edited using the same control keys specified with X stty(C). Additonal editing using the left and right arrow keys and the X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 3 X X X X Ins(ert) key are usually available. Command input may be aborted by X pressing ESC. When a command string has been assembled, it is passed to X the command processor, which breaks the command arguments into a token X array similar to the argc/argv array. When the command handler returns, X XMTR returns to its normal mode of copying keyboard data to the serial X line. X X Further information on XMTR command line processing may be found in X later sections titled Line Editing and Interactive Command History. X X X 2.1.3 Function Key Mapping X X While in tty-to-line mode, function keys other than HOME are available X to be mapped to transmit short keystroke sequences on a connection by X connection basis. Under control of the dialing command ("Dial" X described below) or the function key control command ("FK"), predefined X function key maps may be loaded. X X Function keys which may be mapped are F1 through F12, PgUp, PgDn, End, X Ins, Del, and the cursor control keys. X X The unshifted keypad '5' key is permanently mapped to produce a screen X snapshot when it is pressed and XMTR is reading from the keyboard. X X Thhe BackTab (shift Tab) key is mpermanently mapped to a screen X redisplay feature. X X X 2.1.4 Auxiliary Operation Control X X Certain commands cause ECU to perform what is called an auxiliary X operation, requiring temporary termination of the RCVR process. Such X operations are not as useful with cu(C), because cu does NOT kill its X receiver process at any time. As a result, it impossible to run a X modern file transfer protocol since the cu receiver process eats some of X the characters sent by the remote protocol program. X X There are two types of auxiliary operations: 1) internal interactive X command or procedure execution and 2) external program execution. X Certain internal commands require tight control over the serial line. X For instance, the dial command requires transmitting modem command X strings and receiving modem response codes. Such functions are best X accomplished by single-process control of the line. External program X execution is of two kinds, file transfer invocation and local X shell/command execution. X X The RCVR process is terminated in any of these cases either to avoid the X RCVR swallowing characters intended for other targets (the modem handler X in XMTR or the file transfer protocol) or to avoid having remote data X interspersed with the output of local programs. X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 4 X X X X 2.2 Receiver Process (RCVR) X X X The receiver process reads the incoming serial data stream and passes it X to the user terminal driver through a filter which scans for events such X as the occurrence of ASCII BEL (bell) characters or terminal control X sequences. RCVR also handles the session logging and ANSI filter X functions. X X X 2.2.1 ANSI Filter X X Since the term "ANSI" is used to describe many variations on the ANSI X X3.64 recommendations for terminal control (read "IBM pseudo-ANSI"), the X ECU receiver process has an "ANSI filter" which attempts to translate X incompatible (read "MSDOS") ANSI-like control sequences to sequences X acceptable to the UNIX/XENIX display driver. This includes support for X the MS-DOS "save cursor" and "restore cursor" sequences. More X information may be found later in "Terminal Model." X X X 2.2.2 Session Logging X X When directed by the user, the RCVR process logs incoming serial data to X a file named on the log command line. The default operation is to X filter unprintable characters (other than TAB and NL) from the log, but X raw logging is available with a command option. In a like manner, the X default is for appending to an existing file, but a command option may X specify scratching any previous contents. X X Log files receive header lines each time the file is opened, stating the X logical system name, the telephone number and the date/time. X X X X 2.3 Supported Terminals X X X ECU does not attempt to support terminal emulation in the classic sense X of the word. It presents to the remote host an "ANSI-like" terminal X type as described earlier in the introduction and in the section titled X "ANSI Filter." However, it does support, with limitations, any LOCAL X terminal (console) for which a valid termcap description exists. You MAY X be able to use ECU with a remote terminal (calling into UNIX/XENIX over X a network or modem), but you may get unfavorable results with function X key usage if your modem is a "packetizing" type, such as a Telebit or if X ethernet or other networking chops up your keystroke sequences. ECU X allows approximately 60 milliseconds after receiving an ASCII ESC X character for later characters of a function key sequence to arrive. If X at least one character of the sequence has not been received in that X time, ECU treats the key as an ESCape, not a function key. This typical X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 5 X X X X problem of detecting ESC vs. function key is unfortunate, but we must X live with it until paradigms change (say, in about 2010?). X X The termcap entry for a console MUST contain a valid entry for the X following database entries: X X X cl clear screen X kl cursor left X kr cursor right X dc delete character X dl delete line X cd clear to end of display X ce clear to end of line X ic insert character X al insert line ("add" a "line") X cm cursor motion X so stand out (terminal specific attention getter) X se stand end X X X The above sequences MUST be present, valid and reasonably efficient. X ECU does not use curses during most of it's operation, and unlike X curses, makes no attempt to emulate missing terminal functionality. X Failure to provide valid entries will result in strange behavior with no X warning. X X Note that the formal termcap description of "kl" and "kr" state these X are sequences generated by the terminal keyboard, but ECU expects that X these sequences also causes the desired effect when sent to the screen. X X Additionally, the following, optional, sequences will be used if they X are detected. X X X mb bold on ("XENIX" extension) X me bold off ("XENIX" extension) X us underscrore on X ue underscrore off X vb visual bell X X X A future version of ECU may use terminfo instead of termcap. Problems X with terminfo prevent its use at the present time. In addition, early X versions of XENIX do not support terminfo. X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 6 X X X X 2.4 Function Key Recognition X X X ECU recognizes 23 function keys as having special significance to its X operation. They are (with their AT/"ANSI" character sequences): X X Internal Description AT/"ANSI" Char- X Name or Key Label acter Sequence X -------- ------------ --------------- X F1 F1 ESC [ M X F2 F2 ESC [ N X F3 F3 ESC [ O X F4 F4 ESC [ P X F5 F5 ESC [ Q X F6 F6 ESC [ R X F7 F7 ESC [ S X F8 F8 ESC [ T X F9 F9 ESC [ U X F10 F10 ESC [ V X F11 F11 ESC [ W X F12 F12 ESC [ X X Home Home ESC [ H X End End ESC [ F X PgUp Page up ESC [ I X PgDn Page down ESC [ G X CUU Up arrow ESC [ A X CUD Down arrow ESC [ B X CUL Left arrow ESC [ D X CUR Right arrow ESC [ C X CU5 "Cursor 5" ESC [ E X Ins Insert ESC [ L X BkTab Back Tab ESC [ Z X X X ECU recognizes function keys entered by the user in one of two ways, X depending upon whether the terminal is recognized as an "ANSI" or "non- X ANSI" terminal (see "Supported Terminals" above). X X If an AT/"ANSI" terminal is in use, ECU expects the standard AT/"ANSI" X sequences to be generated by the keyboard according to the above table. X This means that no use of the setkey(C) program (or similar X functionality) may be active. X X If an "non-ANSI" terminal is in use, ECU matches a function key sequence X to an internal function key representation by testing all keystroke X sequences again an internal table loaded at the beginning of execution X from the file ~/.ecu/nonansikeys. NOTE that supported terminals MUST X employ function keys which generate sequences beginning with an ASCII X ESC (escape, 0x1B, decimal 27, octal 33). X X The format of an file entry is shown below in the 'ansilike' example X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 7 X X X X (used to test ECU from the console by defining an 'ansi' terminal type X nevertheless equivalent to 'ansi'). X X Lines beginning with '#' are comments. X X X #+------------------------------ X # ECU 3.0 nonansikeys X #------------------------------- X ansilike X ansi X msdos X dos X dosansi X test X F1:F1: esc [ M X F2:F2: esc [ N X F3:F3: esc [ O X F4:F4: esc [ P X F5:F5: esc [ Q X F6:F6: esc [ R X F7:F7: esc [ S X F8:F8: esc [ T X F9:F9: esc [ U X F10:F10: esc [ V X F11:F11: esc [ W X F12:F12: esc [ X X Home:Home: esc [ H X End:End: esc [ F X PgUp:PgUp: esc [ I X PgDn:PgDn: esc [ G X CUU:CUU: esc [ A X CUL:CUL: esc [ D X CU5:CU5: esc [ E X CUR:CUR: esc [ C X CUD:CUD: esc [ B X Ins:Ins: esc [ L X BkTab:BackTab: esc [ Z X X X The first line(s) in a terminal keyboard description begin in column 1 X and contain the terminal types (a la $TERM) for which the keyboard X description are valid. The example entry contains several references to X terminal types containing the substring description servicing multiple X terminal types. X X ECU determines whether a terminal meets the ansi vs. ANSI distinction X by searching for 'ansi' in the $TERM environment variable (without X regard to case: 'AnSi' will match as well as though your $TERM X environment variable does not contain 'ansi' (such as 'sun'), then you X may add the terminal type to the 'ansilike' entry rather than create a X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 8 X X X X separate entry. X X Following the "first lines" are key definition entries, each preceded by X at least one tab or space. Each entry is composed of three fields X delimited by commas. The first field of an entry is the internal ECU X function key name and must be chosen from the following strings (with no X regard to case): "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", X "F10", "F11", "F12", "Home", "End", "PgUp", "PgDn", "CUU" (cursor up), X "CUL" (cursor left), "CU5" (unshifted cursor pad 5), "CUR" (cursor X right) and "CUD" (cursor down). The second field contains the name of X the key as it appears on the non-ANSI keyboard (such as "F16" for End on X the Wyse 60). The third field is a description of the character X sequence generated by the non-ANSI keyboard when the chosen key is X pressed; it is a string of one or more tokens separated by spaces or X tabs. X X Note that while ECU requires a function key sequence to begin with an X ASCII ESC (escape), each table entry must contain an 'esc' as it's first X sequence token. This seemingly superfluous requirement ensures X compatibility with possible future support for function keys which do X not begin with ESC. X X In addition, function key sequences may not contain the NUL (0) X character, nor may they exceed 10 characters, including the leading ESC. X X The tokens are described in full in the following sections titled X "Function Key Recognition" and "Function Key Mapping." X X PLEASE NOTE: ECU does not have a reasonable way for you to terminate it X if there are no Home and End keys defined, so it refuses to proceed if X no definitions are found. Even so, if you have incorrect definitions, X you may not be able to get out of ECU without a kill -1 <pid> from X another terminal or hanging up your connection with UNIX/XENIX if using X ECU from remote. X X X 2.5 Function Key Mapping X X X ECU recognizes function keys in a manner described in the above section X titled "Function Key Recognition." This section deals with how ECU X behaves once a function key has been recognized as having been entered X at the keyboard. X X All function keys with the exception of the Home, BkTab (shift TAB), and X keypad unshifted 5 key can be programmed to emit selected strings. For X instance, when communicating with a Stratus computer, doing your best to X emulate a VT100, a function key map might be constructed as follows: X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 9 X X X X F1 F1 F2 F2 Home ecu cmd PgUp dispform X F3 F3 F4 F4 End enter PgDn cancel X F5 F5 F6 F6 Ins local shell CUR5 Screen dump X F7 status F8 no status BkTab restore receiver display X F9 F10 redisp CUR^ ^ CUR> > X F11 F12 CUR< < CURv v X X X Function key mapping is placed in ~/.ecu/keys. The Stratus example: X X stratus X F1:F1:esc O q X F2:F2:esc O r X F3:F3:esc O s X F4:F4:esc O t X F5:F5:esc O u X F6:F6:esc O v X F7:F7:esc O w X F8:status:dc4 X F9:no status:nl X F10:redisp:esc O y X F11:redisp:syn X PGDN:cancel:esc O Q X END:enter:esc O M X PGUP:dispform:esc O R X CUU:^:dle X CUD:v:so X CUL:<:stx X CUR:>:ack X X X If you have installed the mapkey file (as described in the release X directory in mapkeys/README), then ALT-a through ALT-z causes the X "silent" execution of procedures 'alt_a.ep' for ALT-a, 'alt_b.ep' for X ALT-b, etc. The models subdirectory contains an example alt_h.ep which X will home the cursor when ALT-h is pressed. This facility allows the X execution of 26 procedures without ECU itself changing the video display X at all. Any changes to the display (short of procedure errors) will X result solely from the action of the invoked procedure. If the X procedure matching the ALT-[a-z] key pressed cannot be found, a short X error message is printed and the terminal bell is rung. (Using back tab X may be used to refresh the display in this event.) X X The strings used to represent "non-printable" characters are identical X to the formal ASCII names given them (without regard to case), viz: X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 10 X X X X 0x00 nul NUL may not appear in a non-ANSI X 0x01 soh function key definition X 0x02 stx X 0x03 etx X 0x04 eot X 0x05 enq X 0x06 ack X 0x07 bel X 0x08 bs X 0x09 ht X 0x0A nl X 0x0B vt X 0x0C np X 0x0D cr X 0x0E so X 0x0F si X 0x10 dle X 0x11 dc1 X 0x12 dc2 X 0x13 dc3 X 0x14 dc4 X 0x15 nak X 0x16 syn X 0x17 etb X 0x18 can X 0x19 em X 0x1A sub X 0x1B esc X 0x1C fs X 0x1D gs X 0x1E rs X 0x1F us X 0x20 sp X 0x7F del X X X X 2.6 Host Video Control Sequences X X X X 2.6.1 All Local Terminals X X The following sequences are recieved over the line by ECU and properly X interpreted for all local terminal types (multiscreen, rlogin/xterm X pseudotty, serial). X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 11 X X X X Sequence | Description X ----------+------------------------------- X ESC [ @ | ICH X ESC [ A | CUU X ESC [ B | CUD X ESC [ C | CUF X ESC [ D | CUB X ESC [ E | CNL See ANSI X3.64, X ESC [ F | CPL screen(HW) and/or X ESC [ H | CUP MS-DOS Technical X ESC [ J | ED Reference Manual X ESC [ K | EL X ESC [ L | IL X ESC [ M | DL X ESC [ P | DCH X ESC [ S | SU X ESC [ T | SD X ESC [ X | ECH X ESC [ ` | HPA X ESC [ a | HPR X ESC [ d | VPA X ESC [ e | VPR X ESC [ f | HVP X ESC [ ? m | SGR X ESC [ n | DSR (see below) X ESC [ s | save cursor MS-DOSism X ESC [ u | restore cursor MS-DOSism X X SGR Sequences for ALL TERMINALS X Sequence | Description | Maps to termcap X ----------+---------------+------------------------------- X ESC [ 0 m | normal | "se"+"me"+"ue" X ESC [ 1 m | bold | "so" X ESC [ 4 m | underscore | "us" X ESC [ 5 m | blink | "mb" (XENIX extension) X ESC [ 7 m | reverse video | "so" X X X X 2.6.2 Multiscreen Local Terminals X X In addition to the above, if you are operating from a color multiscreen, X additional (SCO and MS-DOS/ANSI.SYS) sequences are supported (see X screen(HW)): X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 12 X X X X Additional Multiscreen SGR Sequences X Sequence | Description (no termcap mapping) X ------------+----------------------------------------------- X ESC [ 8 m | non-display X ESC [ 1 0 m | select primary font X ESC [ 1 1 m | select first alternate font (0x00-0x1F) X ESC [ 1 2 m | select second alternate font (0x80-0xFF) X ESC [ 3 0 m | black foreground X ESC [ 3 1 m | red foreground X ESC [ 3 2 m | green foreground X ESC [ 3 3 m | brown foreground X ESC [ 3 4 m | blue foreground X ESC [ 3 5 m | magenta foreground X ESC [ 3 6 m | cyan foreground X ESC [ 3 7 m | white foreground X ESC [ 3 8 m | enables underline option X ESC [ 3 9 m | disables underline option X ESC [ 4 0 m | black background X ESC [ 4 1 m | red background X ESC [ 4 2 m | green background X ESC [ 4 3 m | brown background X ESC [ 4 4 m | blue background X ESC [ 4 5 m | magenta background X ESC [ 4 6 m | cyan background X ESC [ 4 7 m | white background X X X X ECU also does it's best to interpret MS-DOS "SGR gaggles" such as X X ESC [ 5 ; 3 4 ; 4 7 m X X which means "set the terminal to white background with blue blinking X foreground." X X X 2.6.3 Character Mapping X X The MS-DOS ROM signal ruling characters from the following table are X mapped after the fashion of: X X X .-----+--------. X | | | X | +--------+ X | | | X +-----+ | X | | | X `-----+--------' X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 13 X X X X Mapped Characters (see pc_scr.h): X Hex | Description X -----+--------------------------- X 0xDA | top left single rule X 0xBF | top right single rule X 0xC0 | bottom left single rule X 0xD9 | bottom right single rule X 0xC3 | left hand T X 0xB4 | right hand T X 0xB3 | vertical rule X 0xC4 | horizontal rule X X X (Due to momentary laziness on the part of the author, double ruling X characters will appear as random druk, unless your terminal is smart X enough to have joined the Church of the True-Blue ROM. One day an X X version of this program will appear and you can choose to no longer X accomplish real work, but may spend your days editing 42Kb resource X files which will give you TAC, Total Anal Control, over all this.) X X X 2.7 Line Editing X X X When you are entering a line of text for an ecu command or in a field on X a screen, you may edit it in a number of ways at any time prior to X pressing Enter. Cursor Left moves the cursofr left by one character X position, nondestructively. Cursor Right moves to the right. Insert X toggles insert mode. Backspace (your erase key as specified to stty in X commands, the actual backspace key in screens) deletes the character to X the left of the cursor. Your line kill key (as specified to stty) in X command mode or the ^U character in screen mode erases the entire line. X Esc in command mode cancels the command. Esc in screen mode usually X cancels the screen or subfunction in a screen. ^L or ^R in interactive X command mode shows the current state of Insert mode and redisplays the X edited string. X X X 2.8 Screen Dump X X X When the "cursor 5" key is pressed, the screen contents are dumped to a X file. By default, this file is named '~/.ecu/screen.dump'. The sdname X interactive command either displays or changes the current screen dump X file name, depending upon whether or not a argument is supplied. The X scrdump procedure command can initiate a dump. X X X 2.8.1 Multiscreen and Non-Multiscreen X Note that from multiscreens, screen dump produces a dump of the actual X screen contents, including ECU-generated output. When using a non- X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 14 X X X X multiscreen terminal, screen dump dumps only the shared memory virtual X screen as received from the host. If standard input is not a serial X line (xterm o or /dev/null), screen dumps will be of the non-multiscreen X type. X X If, at a multiscreen, you wish a screen dump free of ECU output X "pollution," use Shift-Tab (BkTab) to redraw the screen, then perform X the screen dump. X X X 2.8.2 Multiscreen Bug X There has been a bug in the multiscreen driver for some time wherein a X MEDIA COPY (screen dump) sequence ("ESC [ 2 i") leaves the "ESC [ 2" X part "active". When a screen dump (Cursor 5) command is given, I do the X sacreen dump, then send a "l" to the screen to work around the bug ("ESC X 2 [ l" unlocks the keyboard, essentially a no-op). If and when it gets X fixed, you'll see an "l" show up on your screen after a screen dump X sequence. To fix this, comment out the X X #define MULTISCREEN_DUMP_BUG X X at the top of ecuscrdump.c. X X X 2.9 Interactive Command History X X X After pressing the Home key, pressing it again invokes the interactive X command history function. After the second Home key is pressed, the X last interactive command is redisplayed. Line editing may be performed X on the command as described in the previous section. X X Additionally, using the Cursor Up key accesses less recent commands. X The Cursor Down key accesses more recent commands. Pressing Enter X causes the command to be executed. Pressing Esc aborts command entry. X X X 2.10 Dialing Directory X X X ECU provides an on-line editable dialing directory. Remote systems are X defined as records using alphanumeric identifiers as keys. Other record X fields include telephone number, baud rate, parity and textual X description. X X Other features include changing to alternate dialing directory and a X multi-number redial cycle function. Refer below to the description of X the interactive dial command. X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 15 X X X X 2.11 Online Command Dictionary X X X The ECU help command presents a display of interactive commands. The X user is then prompted to enter a command name for further, Unix-style X "usage" information. X X X 2.12 Multiscreen Event Alarm X X X By using the BN (bell notify) interactive command, an audible alert is X sent to all multiscreens when an ASCII BEL (bell) is received or when a X file transfer completes. An additional option causes an alert when ANY X data is received from the line. This makes it simple to do work on X other multiscreen consoles and be alerted when attention to the X communications session is required. X X For instance, the Berkeley 4.x Unix utility "talk" rings the bell when X another user wishes an interactive chat mode. BSD "biff" rings the bell X when incoming mail is received. Scripts or commands at remote sites can X be configured to ring the bell as in: X X make foo bar; bell; make more_stuff; bell; X X to call attention to the ECU user when work is being done on other X multiscreen consoles. X X This feature is only available when you are running ECU from a X multiscreen. X X X 2.13 Built-in Modem Dialer X X X The built-in ECU dialer supports modems which use the Hayes-style AT X command set or most variants thereof. It is used when HoneyDanBer UUCP X is not installed or when there is no entry in the /usr/lib/uucp/Devices X file for the selected outgoing line. (For more information, see the X later section titled "HoneyDanBer UUCP Interface".) X X The built-in dialer uses files in the /usr/lib/ecu directory which X contains modem initialization information. Modem initialization X filenames are made from concatenating the tty name with ".mi". For X instance, tty1a's initialization file is named "tty1a.mi". X X Commands for initializing the modem and for dialing may be specified in X a very flexible manner. Separate init and dial strings for each legal X baud rate, a single pair of strings for all baud rates or a combination X may be specified. X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 16 X X X X Sample Modem Initialization Files X X #+----------------------------------------------------------- X # tty1a.mi - Microcom AX/9624c X #------------------------------------------------------------ X init_>2400:ATS11=47X4S0=0S7=30Q1X1N3 # baud rates > 2400 X init_default:ATS11=47X4S0=0S7=30Q0X0N0 # other baud rates X dial_default:ATDT X X X #+----------------------------------------------------------- X # tty2d.mi - USR Courier 2400 X #------------------------------------------------------------ X init_default:ATS11=47 X4 S0=0 S7=32 X dial_default:ATDT X X X 2.14 File Transfer X X X ECU supports numerous file transfer protocols: as of this writing, X XMODEM, XMODEM/CRC, XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16, X ZMODEM/CRC-32, and Kermit are supported. Although a seamless interface X (there's some yuppie marketing newspeak) is provided to the user, X transfer is facilitated by executing external programs. X X As of this writing SEAlink is not in the best of health (no one has X complained :-). X X Kermit support required you to obtain and patch C-Kermit 4E. The patch X information is available in the ckermit subdirectory of the release. As X soon as C-Kermit 5 is stable and released by Columbia, a suitable patch X will be developed for it. It is quite possible no patching will be X necessary. X X XMODEM, YMODEM and ZMODEM transfers (thanks to modified public domain X programs by Chuck Forsberg) present dynamic status displays similar to X the following: X X X X X X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 17 X X X X .-[ ecusz 2.37 ]-- /tmp -----------------------------------. X | ZMODEM/CRC32 Data xfer rate ~= 896 chars/sec | X | File 1 of 1: ckermit-5a-130 | X | File position: 34053 length: 34053 -rw-r--r-- | X | Sending 34053 bytes total time ~= 0:40 | X | tx: hdr ZFIN 0 rx: hdr ZFIN 0 | X | Comm I/O: rx 175 tx 34393 bytes | X | Baud rate: 9600 BINARY blklen: 1024 comm mode: NORMAL | X | Time: started: 17:31:50 this file: 17:31:51 | X | 17:32:29 elapsed: 00:00:39 00:00:38 | X | Errors: this file: 0 total: 0 files skipped: 0 | X | Total file bytes transferred: 34053 | X | End of file | X | Remote: CRC32 y duplex y continuous stream y | X `- Connected to ki4xo - procedure put_ck5a ----------------' X X X X 2.15 Procedures (Scripts) X X X A powerful, language-style procedure language is incorporated into ECU. X The language is described in later sections. X X X 2.16 Initial (Startup) Procedure X X X An initial procedure may be be specified to ECU either to initialize an X interactive session or to execute an entirely unattended or "batch" X communication session. X X X X 2.17 Home Directory Files X X X ECU control files reside in the .ecu subdirectory of each user's home X directory. For example, in home directory /usr/wht: X X /usr/wht/.ecu/dir CD interactive command history file X /usr/wht/.ecu/keys function key mapping X /usr/wht/.ecu/nonansikeys function key mapping X /usr/wht/.ecu/log connect, file transfer history X /usr/wht/.ecu/phone default dialing directory X /usr/wht/.ecu/colors colors used by ECU X X X The .ecu directory is also searched for ECU procedure files (having the X '.ep' extension) in the procedure cannot be found in the current working X directory. X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 18 X X X X 2.18 Lock Files X X X ECU maintains lock files in /usr/spool/uucp in accordance with the X HoneyDanBer UUCP conventions (ASCII pids as 10-character strings X followed by a newline). Lock files are created for the lower-case X device names of a line and checked for in both cases. For example, both X LCK..tty1a is created when /dev/tty1a OR /dev/tty1A is selected and X neither LCK..tty1a nor LCK..tty1A are active. See the later section X titled "HoneyDanBer UUCP Interface". X X X 2.19 Dial-In/Dial-Out Line Support X X X ECU works with the SCO getty to support dialing out on a line enabled X for login. After use of the line is complete, ECU signals the system to X restore incoming call status to the line. See the later section titled X "HoneyDanBer UUCP Interface". X X X 2.20 Tools X X X Commands are provided for conversion of hexadecimal or decimal numbers X to and from ASCII equivalents. For example, 26(10) == 0x1a == ^Z == X SUB. For details, refer to the description of the XA and AX interactive X commands. X X X 2.21 Shared Memory 'Friend' Interface X X X ECU maintains a copy of the received screen image (80 x 43 maximum) and X other information in its shared memory segment. Normally, this X information is used only by the transmitter and receiver process. X However, ECU supports the concept of a friend process which may access X the shared memory segment, perform arbitrary auxiliary operations, read X from and write to the attached communications line and communicate X resulting information or status to an ECU procedure via a 1024-byte X "friend" data area in the shared memory segment. X X The procedure language supports the friend process concept through X commands and functions which allow X X + passing the ECU shared memory segment id (%shmid) to a called X program, X X + reading a single character or string of characters from screen X memory, X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 19 X X X X + reading cursor position information and X X + reading and writing of characters, short or long integers and X strings in the 1024-byte "friend" shared memory data area. X X The algorithm for obtaining the shared memory segment key is X X 0xEC000000L + transmitter process id X X Thus a "friend" process may either use a %shmid shared memory key passed X as an argument or obtain the shared memory key by using: X X key_t shmkey = 0xEC000000L | getppid(); X X X This facility allows batch and interactive applications to be developed X with C programs which would be tedious or impractical to implement with X procedure language alone. X X For more information, refer to the shared memory header file ecushm.h, X the ecufriend subdirectory of the software release and to the X description of the %shmid, %cury and %curx procedure functions and the X getf and putf procedure commands. X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 20 X X X X 3. Starting the Program X X X X 3.1 Simple Startup - Initial Setup Menu X X X ECU may be started in a number of ways through use of command line X switches, but the easiest is to enter X X ecu X X by itself. In this case, the screen is cleared and the folowing screen X will be presented. X X X X X .--[ ecu 1.96 Copyright 1986,1989, W. Tucker ]-----------------. X | | X | Name/phone number to call: ___________________ | X | | X | | X | tty: /dev/tty1a | X | | X | duplex: F baud: 2400 parity:N (data bits 8) | X | Add NL to transmitted CR: N | X | Add NL to received CR: N | X | | X | | X | TAB:next ^B:prev END:proceed ^D:phone dir ESC:quit ecu | X `- logical phone directory entry, phone number or empty -------' X X X X X X 3.1.1 Name/Phone Number Field X X If a dialing directory has been configured, a literal phone number need X not be entered. However, on your first invocation, you'll very likely X have no directory. Therefore, you have three options: X X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 21 X X X X 1. Enter a literal telephone number, (e.g. 18005551212). X Hyphens and open and close parentheses may also X be entered. X X 2. Press ENTER to skip the 'Name/phone' field and enter X ^D to enter the telephone directory to enter your X first directory entry. X X 3. Press END to enter interactive mode and use the Dial X interactive command to dial a literal telephone num- X ber or to enter the dialing directory. X X X X 3.1.2 Other Fields X X The 'tty' field may be used to select an outgoing line other than the X default /dev/tty1a. Note: only the last two characters of the tty name X need be entered. The remainder of the tty name is assumed to be X '/dev/tty'. X X The 'duplex' field may be used to select a duplex value other than the X default 'F' (full). X X The 'baud' field may be used to select a baud rate value other than the X default 2400. X X The 'parity' field may be used to select a parity value other than the X default 'N' (none). X X X The 'Add NL to transmitted CR' and 'Add NL to received CR' fields are X usually left defaulted to 'N' (no). If you will be communicating with a X terminal (with a human), you will usually need to set both of these X fields to 'Y' as well as to select 'H'alf duplex. X X X 3.1.3 Special Characters X X Special keyboard characters while filling in the startup screen are: X X X X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 22 X X X X TAB move to next field ... if nothing typed in X the field, do not disturb contents X X ^B back up to previous field X X END proceed with session, dialing remote if X logical directory entry name or literal X telephone number enetered X X ^D enter phone directory X X ESC quit ecu without any communications X X X X 3.2 Command Line Arguments and Switches X X X ECU can be started in a number of ways: X X X ecu [-lxx] [-b<baud>] [-h] [-e|-o] [-t] <tel-number> X ecu [-lxx] [-b<baud>] [-h] [-e|-o] [-t] X ecu [-t] [-h] <logical> X ecu [-lxx] [-b<baud>] [-h] [-e|-o] [-d] [-D] -p <proc> [<arg> ...] X X X X 3.2.1 Non-Switch Arguments X X Only one type of non-switch argument may be used on the command line. X <tel-number> or <logical> may appear when the -p switch is absent. One X or more <arg> arguments may appear when the -p switch is used. X X X 3.2.2 <tel-number> X X This type of argument has a digit as its initial character and X represents an actual telephone number to be passed to a modem dialer X program or Dialers chat script. The string may contain non-numeric X characters if appropriate for a dialer program, such as dialTBIT. For X example: X X ecu -l/dev/tty2a -b 19200 -e 5551212UC X X uses tty2a (assumed to be connected to a Trailblazer modem) and X establishes a 19200 baud, even parity PEP Compressed connection after X dialing 5551212. X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 23 X X X X 3.2.3 <logical> X X This type of argument has an alphabetic initial character and causes the X dialing directory entry by that name to be dialed. The line may be X specified by '-l', but if the dialing directory specifies a line (tty X field contaions other than 'Any'), the dialing directory entry will X override it. The '-b', '-e' and '-o' switches are ignored; the values X specified by the dialing directory entry are used. The '-t' and '-h' X switches are valid and honored if present. X X X 3.2.4 <arg> X X This type of argument is passed to an initial procedure when the -p X switch is present. X X X ecu -p unixlogin user pwd ansi43 X X executes unixlogin.ep with arguments 'user' 'pwd' 'ansi43' X X For more detail, refer to the description of -p, -d and -D below. X X X 3.2.5 -l X X When ECU starts up, it normally chooses a line as described later in the X section titled "Choosing a Dialout Line". Specifying the -l switch can X suggest that the program choose a specific line. The argument to the X switch is the last two charcters of the ttyname; e.g., "-l1a". X X On a system with HoneyDanBerr UUCP, to access a device which does not X appear in the Devices file, it may be necessary to explicitly specify X the device with -l. X X X 3.2.6 -f X Normally, ECU starts up in the full duplex mode. If half duplex is X desired, the -f switch is used. X X X 3.2.7 -e, -o X X Normally, ECU starts up with 8 data bits and no parity. If even parity X is desired, the -e switch is specified. If odd parity is desired, the X -o switch is specified. X X These switches X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 24 X X X X 3.2.8 -p <procname> X X The -p switch causes ECU to execute the procedure <procname> X ("<procname>.ep") immediately. Such a procedure is termed the initial X procedure. All non-switch arguments after <procname> are passed as X arguments to the initial procedure (see the descriptions of the integer X function %argc and the string function %argv). X X X 3.2.9 -d X X The -d switch instructs ECU to "die" (terminate with error status) if an X initial procedure (-p) fails. This switch ensures a batch ECU execution X will hang up any connection and terminate if a procedure error occurs. X See also -D below. X X Absence of the -d and -D switches causes ecu (upon any completion of the X initial procedure) to enter the 1) interactive mode if a line was X successfully attached by the procedure or 2) the setup menu if no line X was attached. X X X 3.2.10 -D X X The -D switch instructs ECU to unconditionally terminate when an initial X procedure finishes. X X X 3.2.11 -t X X The -t switch instructs ECU to map incoming and outgoing carriage X returns to carriage return/line feed pairs. This is helpful if the X remote connection will be to a terminal with a human operator. Use of X the -h switch is probably also necessary. X X X 3.2.12 -A X X Normally, ECU reads the terminal type (TERM environment variable) to X determine whether or not a terminal is "ANSI"-like or not. -A forces X ECU to treat the terminal as an ANSI terminal, regardless of the X contents of the $TERM string. X X X 3.2.13 -N X X This switch forces ECU to treat the terminal as a non-ANSI terminal. It X has the opposite effect of -A. You must have a valid function key X recognition entry for the $TERM type if this switch is used. X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 25 X X X X 3.3 Environment Variables X X X Prior to starting ECU, it is useful, but not necessary, to establish two X environment variables, ECUPROMPT and ECUHELP. X X X 3.3.1 ECUPROMPT X X The ECUPROMPT environment variable determines the prompt printed by ECU X when the interactive command key ("HOME") is pressed. When you first X run ECU, try setting it to your name, e. g., X X setenv ECUPROMPT Ralph if you use csh X X ECUPROMPT=Ralph if you use sh, ksh, etc. X export ECUPROMPT X X Then, when you see how it used, you may wish to establish a more X permanent choice in your .login or .profile. X X X 3.3.2 ECUHELP X X Ordinarily, ECU looks for interactive command help information in X "/usr/lib/ecu/ecuhelp.data". The ECUHELP environment may be set to the X complete pathname of the ecu help file if an alternate file is to be X used. X X The help file is explained later in the section titled "Online Command X Dictionary". X X X X X X X X X X X X X X X X X X X X X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 26 X X X X 4. Interactive Mode Commands X X X The following is a partial list of commands available in the interactive X (non-procedure) mode. It is not necessary to to enter the entire X command in most cases. The portion of each command which must be X entered is capitalized in the following section headers. X X Refer to the sections titled Interactive Command History and Line X Editing for more information. X X X 4.1 AX : ascii char to hex/oct/dec X X usage: ax [<param>] X X X <param> may be a single ASCII character, a standard ASCII identifier X (such as ETX), or a two-character control character identifier (such as X ^C, typed as a caret followed by a C). X X If no argument is supplied, a table of control characters is printed X containing decimal, octal, hex, ASCII identifiers and two-character X control character identifier. X X X X 4.2 BAud : set/display line baud rate X X usage: baud [<baud-rate>] X X X <baud-rate>, if specified, must be taken from the values 110, 300, 600, X 1200, 2400, 4800, 9600, 19200 and 38400. On some systems, 19200 and X 38400 may not be supported. If baud rate 110 is selected, 2 stop bits X are automatically specified; other baud rates set 1 stop bit. If X <baud-rate> is not supplied, the current baud rate is displayed. X X The setting may be automatically changed as the result of a 'dial' X command. See also the dial and parity command descriptions. X X X X 4.3 BN : all console event alarm X X usage: bn [ 0 | 1 | 2 ] X X X "bell notify": If no argument is supplied, the current setting is X displayed. Specifying 0 disables the facility; 1 causes an audible X alarm to be sounded on all of the XENIX virtual consoles upon receipt of X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 27 X X X X a bell (0x07) character from the remote system; 2 causes an audible X alarm to be sent to all consoles upon receipt of ANY characters from the X remote system. A non-zero value also causes an audible alarm to be sent X to all console upon the successful completion of a 'redial' command X which must retry more than one redial attempt or upon completion of a X file transfer operation. X X Different alarms are sent depending upon the the type of event causing X the alarms. X X BN is set to 1 when ECU begins executing. X X The setting of this command has no effect if ECU is not run from a X multiscreen. X X X 4.4 BReak : send break to remote X X usage: break X X X This command sends a break signal to the remote system. X X X X 4.5 CD : change current directory X X usage: cd [<dir-path>] X X X This command allows you to change the working directory of the ECU X process. If <dir-path> is supplied, the previous working directory is X displayed, and <dir-path> is made the new working directory. A history X of previous directory changes is maintained. Entering the cd command X shows the numbered history list and allows you to select a new directory X by entering the number. Other commands allow deletion of directories X from the list or saving the list to file ~/.ecu/phone. This file is X automatically read at ECU startup, providing a convenient list of X directories available for quick selection. X X X X 4.6 DA : decimal to ascii char X X usage: da [<decimal-val>] X X X <decimal-val> is a decimal value between 0 and 0377; the parity (sign) X bit is stripped and the equivalent ASCII character value is displayed. X X If no argument is supplied, a table of control characters is printed X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 28 X X X X containing decimal, octal, hex, ASCII identifiers and two-character X control character identifier. X X X X 4.7 Dial : dial remote destination X X usage: dial [<dial-param>] X X X <dial-param> may take one of two forms, a telephone number to dial or a X logical name which can be found in the user phone directory (in file X ~/.ecu/phone). X X If a telephone number is supplied, the phone number is dialed; you must X first have set the desired baud rate and parity using the baud and X parity commands. X X If a logical name is entered, the phone directory is searched; if the X entry is found, the baud rate and parity is automatically set. If a X procedure file can be found in the current directory or the users home X .ECU subdirectory whose name matches the logical name, then the X procedure is executed with the argument '!INTERACTIVE'. X X If <dial-param> is not supplied, then a screen-oriented self-documenting X <:-)> directory manager is executed; you may scan the the directory to X select a number to dial, as well as add, remove and edit entries. X X 4.7.1 Alternate Dialing Directory X X The default dialing directory is ~/.ecu/phone. You may change to X another directory by issuing the interactive dial command with no X arguments to enter the dialing directory menu, selecting 'c'hange dial X directory, and entering the name of a new directory. The specified X pathname must either be a fully qualified pathname or a pathname X relative to the current working directory. Once an alternate directory X has been selected, it will be used by both the interactive command 'dial X <logical>' and the dialing directory menu. X X See the section below titled "Choosing a Dialout Line" for more X information on using "Any" in the "tty" field of a directory entry. X X X 4.7.2 Multi-Number Redial Cycle X X While in the dialing directory, you may "mark" one or more entries for X a cyclical redial attempt. When any entry is marked, typing ENTER X (carriage return or line feed/newline) causes each marked entry to be X dialed in turn until one of the remote systems is successfully X connected. When a successful connection occurs, ECU unmarks the X associated entry, leaving the others marked. Thus, you may mark several X X X X Public Domain by wht@n4hgf 12/26/90 X X X X X X X X ECU Technical Description 29 X X X X entries and merely reenter the dialing directory after each connection X is finished and press ENTER to reenter the redial cycle. If a single X entry is marked, ECU pauses 15 seconds between each dialing attempt, X otherwise 5 seconds. Presing 'c' will cause the pause to be prematurely X terminated and the next attempt to be made. Pressing your interrupt key X (DEL, ^C or whatever) aborts the cycle. If you interrupt an active X dialing attempt, you will be prompted as to whether or not you wish to SHAR_EOF true || echo 'restore of doc/ecu.man failed' echo 'End of ecuman3 part 1' echo 'File doc/ecu.man is continued in part 2' echo 2 > _shar_seq_.tmp exit 0 -------------------------------------------------------------------- Warren Tucker, TuckerWare emory!n4hgf!wht or wht@n4hgf.Mt-Park.GA.US Hacker Extraordinaire d' async PADs, pods, proteins and protocols exit 0 # Just in case... -- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM Sterling Software, IMD UUCP: uunet!sparky!kent Phone: (402) 291-8300 FAX: (402) 291-4362 Please send comp.sources.misc-related mail to kent@uunet.uu.net.