From decwrl!elroy.jpl.nasa.gov!sdd.hp.com!cs.utexas.edu!uunet!allbery Wed May 16 10:14:01 PDT 1990
Article 1559 of comp.sources.misc:
Path: decwrl!elroy.jpl.nasa.gov!sdd.hp.com!cs.utexas.edu!uunet!allbery
From: wht%n4hgf@gatech.edu (Warren Tucker)
Newsgroups: comp.sources.misc
Subject: v12i079: ECU 2.80 part 26/29
Message-ID: <88382@uunet.UU.NET>
Date: 12 May 90 02:04:57 GMT
Sender: allbery@uunet.UU.NET
Lines: 1643
Approved: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)

Posting-number: Volume 12, Issue 79
Submitted-by: wht%n4hgf@gatech.edu (Warren Tucker)
Archive-name: ecu2.80/part26

---- Cut Here and unpack ----
#!/bin/sh
# This is part 26 of ecu280
if touch 2>&1 | fgrep '[-amc]' > /dev/null
 then TOUCH=touch
 else TOUCH=true
fi
# ============= ckermit/ckutio.diff ==============
echo "x - extracting ckermit/ckutio.diff (Text)"
sed 's/^X//' << 'SHAR_EOF' > ckermit/ckutio.diff &&
X*** ckutio-orig.c	Mon Nov  6 04:11:30 1989
X--- ckutio.c	Sun Mar 25 13:25:56 1990
X***************
X*** 1,4
X! /* CHK=0x2848 */
X  char *ckxv = "Unix tty I/O, 4E(047), 27 Jan 88";
X  
X  /*  C K U T I O  */
X
X--- 1,4 -----
X! /* CHK=0xDA43 */
X  char *ckxv = "Unix tty I/O, 4E(047), 27 Jan 88";
X  /*+:EDITS:*/
X  /*:06-16-1988-19:26-wht-modified for ecu - ECU_MODS is keyword */
X***************
X*** 1,5
X  /* CHK=0x2848 */
X  char *ckxv = "Unix tty I/O, 4E(047), 27 Jan 88";
X  
X  /*  C K U T I O  */
X  
X
X--- 1,8 -----
X  /* CHK=0xDA43 */
X  char *ckxv = "Unix tty I/O, 4E(047), 27 Jan 88";
X+ /*+:EDITS:*/
X+ /*:06-16-1988-19:26-wht-modified for ecu - ECU_MODS is keyword */
X+ #define ECU_MODS
X  
X  /*  C K U T I O  */
X  
X***************
X*** 351,356
X  
X  /* Declarations of variables global within this module */
X  
X  static long tcount;			/* Elapsed time counter */
X  
X  static char *brnuls = "\0\0\0\0\0\0\0"; /* A string of nulls */
X
X--- 354,363 -----
X  
X  /* Declarations of variables global within this module */
X  
X+ #ifdef ECU_MODS
X+ static int ecu_calling = 0;
X+ #endif
X+ 
X  static long tcount;			/* Elapsed time counter */
X  
X  static char *brnuls = "\0\0\0\0\0\0\0"; /* A string of nulls */
X***************
X*** 518,524
X      acucntrl("disable",ttname);		/* Open getty on line (4.3BSD) */
X  #endif /* newuucp */
X  
X! 
X  #ifdef UXIII
X      /* if modem connection, don't wait for carrier */
X      ttyfd = open(ttname,O_RDWR | (modem ? O_NDELAY : 0) );
X
X--- 525,532 -----
X      acucntrl("disable",ttname);		/* Open getty on line (4.3BSD) */
X  #endif /* newuucp */
X  
X! /****** b e f o r e ****************************************************/
X! #ifndef ECU_MODS
X  #ifdef UXIII
X      /* if modem connection, don't wait for carrier */
X      ttyfd = open(ttname,O_RDWR | (modem ? O_NDELAY : 0) );
X***************
X*** 525,530
X  #else
X      ttyfd = open(ttname,2);		/* Try to open for read/write */
X  #endif /* uxiii */
X  
X      if (ttyfd < 0) {			/* If couldn't open, fail. */
X  	perror(ttname);
X
X--- 533,571 -----
X  #else
X      ttyfd = open(ttname,2);		/* Try to open for read/write */
X  #endif /* uxiii */
X+ #endif /* ECU_MODS */
X+ /****** a f t e r ******************************************************/
X+ #ifdef ECU_MODS
X+ 	if(isdigit(*ttname))
X+ 	{
X+ 		xlocal = *lcl = 1;	/* force local if fd passed to program */
X+ 		debug(F111,"ttopen numeric ttname, new local",ttname,xlocal);
X+ 		ttyfd = atoi(ttname);
X+ 		debug(F101,"ttyfd passed as numeric=","",ttyfd);
X+ 		ecu_calling = 1;
X+ /* Get tty device settings */
X+ #ifndef UXIII
X+ 		gtty(ttyfd,&ttold);			/* Get sgtty info */
X+ 		gtty(ttyfd,&ttraw);			/* And a copy of it for packets*/
X+ 		gtty(ttyfd,&tttvt);			/* And one for virtual tty service */
X+ #else
X+ 		ioctl(ttyfd,TCGETA,&ttold);		/* Same deal for Sys III, Sys V */
X+ 		ioctl(ttyfd,TCGETA,&ttraw);
X+ 		ioctl(ttyfd,TCGETA,&tttvt);
X+ #endif /* not uxiii */
X+ 		return(0);
X+ 	}
X+ 	else
X+ 	{
X+ #ifdef UXIII
X+     /* if modem connection, don't wait for carrier */
X+     ttyfd = open(ttname,O_RDWR | (modem ? O_NDELAY : 0) );
X+ #else
X+     ttyfd = open(ttname,2);		/* Try to open for read/write */
X+ #endif
X+ 	}
X+ #endif /* ECU_MODS */
X+ /***********************************************************************/
X  
X  
X      if (ttyfd < 0) {			/* If couldn't open, fail. */
X***************
X*** 526,531
X      ttyfd = open(ttname,2);		/* Try to open for read/write */
X  #endif /* uxiii */
X  
X      if (ttyfd < 0) {			/* If couldn't open, fail. */
X  	perror(ttname);
X  	return(-1);
X
X--- 567,573 -----
X  #endif /* ECU_MODS */
X  /***********************************************************************/
X  
X+ 
X      if (ttyfd < 0) {			/* If couldn't open, fail. */
X  	perror(ttname);
X  	return(-1);
X***************
X*** 658,663
X  /*  T T C L O S  --  Close the TTY, releasing any lock.  */
X  
X  ttclos() {
X      if (ttyfd < 0) return(0);		/* Wasn't open. */
X      if (xlocal) {
X  	if (tthang())			/* Hang up phone line */
X
X--- 700,714 -----
X  /*  T T C L O S  --  Close the TTY, releasing any lock.  */
X  
X  ttclos() {
X+ 
X+ #ifdef ECU_MODS
X+ 	if(ecu_calling)
X+ 	{
X+ 		debug(F101,"ttclos disabled for ecu","",0);
X+ 		return(0);
X+ 	}
X+ #endif
X+ 
X      if (ttyfd < 0) return(0);		/* Wasn't open. */
X      if (xlocal) {
X  	if (tthang())			/* Hang up phone line */
X***************
X*** 694,699
X      unsigned short ttc_save;
X  #endif /* hpux */
X  #endif /* uxiii */
X  
X      if (ttyfd < 0) return(0);		/* Not open. */
X  #ifdef aegis
X
X--- 745,758 -----
X      unsigned short ttc_save;
X  #endif /* hpux */
X  #endif /* uxiii */
X+ 
X+ #ifdef ECU_MODS
X+ 	if(ecu_calling)
X+ 	{
X+ 		debug(F101,"tthang disabled for ecu","",0);
X+ 		return(0);
X+ 	}
X+ #endif
X  
X      if (ttyfd < 0) return(0);		/* Not open. */
X  #ifdef aegis
SHAR_EOF
$TOUCH -am 0325132690 ckermit/ckutio.diff &&
chmod 0644 ckermit/ckutio.diff ||
echo "restore of ckermit/ckutio.diff failed"
set `wc -c ckermit/ckutio.diff`;Wc_c=$1
if test "$Wc_c" != "4693"; then
	echo original size 4693, current size $Wc_c
fi
# ============= doc/_basic.txt ==============
if test ! -d 'doc'; then
    echo "x - creating directory doc"
    mkdir 'doc'
fi
echo "x - extracting doc/_basic.txt (Text)"
sed 's/^X//' << 'SHAR_EOF' > doc/_basic.txt &&
X.*s 1 "Basic Organization"
X
XECU forks to run as two separate
Xprocesses, a transmitter (XMTR) and a receiver (RCVR).
XThe two processes
Xcommunicate via signals and a System V shared memory segment.
XXMTR controls RCVR and terminates it under certain circumstances,
Xcalled here auxiliary operations.  After an auxiliary operation
Xcompletes, XMTR forks again to recreate RCVR.
X
X.*s 2 "Transmitter Process (XMTR)"
X
XXMTR
Xaccepts user input from the computer keyboard; input is recognized
Xas belonging to one of two types: 1) transmit data and 2)
XECU commands.  Keyboard input
Xis passed to the serial line driver until an ECU command
Xis detected.  Commands are prefixed with a 
X.B HOME
Xkey which causes ECU to accept keyboard data up to the next ENTER
Xkey as command text.  After a command has been processed,
Xkeyed data is again routed to the serial line.
X
X.*s 3 "Keyboard Interface"
X
XThe keyboard driver is set into the raw mode.
XXMTR reads characters one at a time from the driver.
XNormally, characters read from the keyboard are passed directly to
Xthe serial line driver.  The
XASCII ESC ("escape") character is handled as a special case.
XWhen a function key is pressed, the keyboard driver presents
Xto XMTR an ESC character,
Xfollowed by two more characters describing which function key has
Xbeen pressed.
XPressing the ESC key also causes XMTR to see an ESC character,
Xbut with no subsequent function key "suffix".
X
XWhen an ESC character is read, XMTR delays transmission of the
Xcharacter to the line for a short period to determine whether
Xthe ESC key has been pressed or a function key has been pressed.
XIf no "suffix" is detected, the ESC is passed to the line, having
Xsuffered an insignificant delay given human typing speeds.
X
XIf a function key "suffix" is detected, the function key type
Xis decoded.  The
X.B HOME
Xkey indicates an ECU command follows.  Any
Xother function key is passed to the function key mapping feature
X(described later).
X
X.*s 3 "ECU Command Assembly"
X
XAfter 
X.B HOME
Xhas been pressed, XMTR presents a reverse video prompt on the
Xdisplay, indicating its readiness to accept a command.  During
Xinput, the command may be edited using the same control keys
Xspecified with stty(C).  Command input is aborted by pressing ESC.
XWhen a command string has been assembled, it is passed to the
Xcommand processor, which breaks the command arguments into a token
Xarray similar to the argc/argv array.  When the command handler
Xreturns, XMTR returns to its normal mode of copying keyboard data to
Xthe serial line.
X
XFurther information on XMTR command line processing may be found in 
Xlater sections titled Line Editing and Interactive Command History.
X
X.*s 3 "Function Key Mapping"
X
XFunction keys other than 
X.B HOME
Xare available to be mapped
Xto transmit short keystroke sequences on a connection by
Xconnection basis.  Under control of the dialing command ("Dial"
Xdescribed below)  or the function key control command ("FK"),
Xpredefined function key maps may be loaded.
X
XFunction keys which may be mapped are
X.B F1
Xthrough
X.B F12 ,
X.B PgUp ,
X.B PgDn ,
X.B End ,
X.B Ins ,
X.B Del ,
Xand
Xthe cursor control keys.
X
XThe unshifted keypad '5' key is permanently mapped to
Xproduce a screen snapshot when it is pressed and XMTR is
Xreading from the keyboard.
X
X.*s 3 "Auxiliary Operation Control"
X
XCertain commands cause ECU to perform what is called an
Xauxiliary operation, requiring temporary termination of the
XRCVR process.  Such operations are not as useful
Xwith
X.B cu(C) ,
Xbecause cu does NOT kill its receiver process at any time.
XAs a result, it impossible to run a modern file transfer
Xprotocol since the cu receiver process eats some of the
Xcharacters sent by the remote protocol program.
X
XThere are two types of auxiliary operations:
X1) internal command execution and 2) external program execution.
XCertain
X.B internal
X.B commands
Xrequire tight control over the serial line.
XFor instance, the
X.B dial
Xcommand requires transmitting modem command
Xstrings and receiving modem response codes.  Such procedures
Xare best accomplished by single-process control of the line.
X.B External
X.B program
Xexecution is of two kinds, file transfer invocation
Xand local shell/command execution.
X
XThe RCVR process is terminated in any of these cases either to
Xavoid the RCVR swallowing characters intended for other
Xtargets (the modem handler in XMTR or the file transfer protocol)
Xor to avoid having remote data interspersed with the output of
Xlocal programs.
X
X.*s 2 "Receiver Process (RCVR)"
X
XThe receiver process reads the incoming serial data stream and
Xpasses it to the user terminal driver through a filter which
Xscans for events such as the occurrence of ASCII BEL (bell)
Xcharacters or terminal control sequences.  RCVR also handles
Xthe session logging and ANSI filter functions.
X
X.*s 3 "ANSI Filter"
X
XSince the term "ANSI" is used to describe
X.B many
Xvariations on the ANSI X3.64 recommendations for terminal control (read
X"IBM pseudo-ANSI"), the ECU receiver process has an "ANSI filter" which
Xattempts to translate incompatible (read "MSDOS") ANSI-like control
Xsequences to sequences acceptable to the XENIX display driver.
XThis includes support for the "save cursor" and "restore cursor"
Xsequences.
X
X.*s 3 "Session Logging"
X
XWhen directed by the user, the RCVR process logs incoming serial
Xdata to a file named on the log command line.  The default operation
Xis to filter unprintable characters (other than TAB and NL) from the
Xlog, but raw logging is available with a command option.  In a like
Xmanner, the default is for appending to an existing file, but a
Xcommand option may specify scratching any previous contents.
X
XLog files receive header lines each time the file is
Xopened, stating the logical system name, the telephone number
Xand the date/time.
X
SHAR_EOF
$TOUCH -am 0420010190 doc/_basic.txt &&
chmod 0644 doc/_basic.txt ||
echo "restore of doc/_basic.txt failed"
set `wc -c doc/_basic.txt`;Wc_c=$1
if test "$Wc_c" != "5753"; then
	echo original size 5753, current size $Wc_c
fi
# ============= doc/_end.txt ==============
echo "x - extracting doc/_end.txt (Text)"
sed 's/^X//' << 'SHAR_EOF' > doc/_end.txt &&
X
X.br
X.nr si 0n
X.af % i
X.ls 1
X.TC 1 1 3
SHAR_EOF
$TOUCH -am 0711174289 doc/_end.txt &&
chmod 0644 doc/_end.txt ||
echo "restore of doc/_end.txt failed"
set `wc -c doc/_end.txt`;Wc_c=$1
if test "$Wc_c" != "39"; then
	echo original size 39, current size $Wc_c
fi
# ============= doc/_features.txt ==============
echo "x - extracting doc/_features.txt (Text)"
sed 's/^X//' << 'SHAR_EOF' > doc/_features.txt &&
X.*s 1 "Features"
X
X.*s 2 "Line Editing"
X
XWhen you are entering a line of text for an ecu command or in
Xa field on a screen, you may edit it in a number of ways at any
Xtime prior to pressing Enter.  Cursor Left moves the cursofr left
Xby one character position, nondestructively.  Cursor Right moves
Xto the right.  Insert toggles insert mode.  Backspace (your
Xerase key as specified to stty in commands, the actual backspace key
Xin screens) deletes the character to the left of the cursor.
XYour line kill key (as specified to stty) in command mode or
Xthe ^U character in screen mode erases the entire line.  Esc
Xin command mode cancels the command.  Esc in screen mode usually
Xcancels the screen or subfunction in a screen.  ^L or ^R in
Xcommand mode shows the current state of Insert mode and
Xredisplays the edited string.
X
X.*s 2 "Interactive Command History"
X
XAfter pressing the Home key, pressing it again invokes the
Xinteractive command history function.  After the second
XHome key is pressed, the last interactive command is
Xredisplayed. Line editing may be performed on the command as described
Xin the previous section.
X
XAdditionally, using the Cursor Up key accesses less recent commands.
XThe Cursor Down key accesses more recent commands.  Pressing Enter causes
Xthe command to be executed.  Preesing Esc abort command entry.
X
X.*s 2 "Dialing Directory"
X
XECU provides an on-line editable dialing directory.  Remote
Xsystems are defined as records using alphanumeric identifiers
Xas keys.  Other record fields include telephone number, baud
Xrate, parity and textual description.
X
X.*s 2 "Online Command Dictionary"
X
XThe ECU help command presents a display of interactive commands.  The user
Xis then prompted to enter a command name for further, Unix-style
X"usage" information.
X
X.*s 2 "Multiscreen Event Alarm"
X
XBy using the 
X.B BN
X(bell notify) interactive command, an audible alert is sent to all
Xmultiscreens when an ASCII BEL (bell) is received or when a file
Xtransfer completes.  An additional option causes an alert when ANY
Xdata is received from the line.  This makes it simple to do work on
Xother multiscreen consoles and be alerted when attention to the
Xcommunications session is required.
X
XFor instance, the Berkeley 4.x Unix utility "talk" rings the bell when
Xanother user wishes an interactive chat mode.  BSD "biff" rings the bell
Xwhen incoming mail is received.  Scripts or commands at remote sites can
Xbe configured to ring the bell as in:
X.DS I
Xmake foo bar; bell; make more_stuff; bell;
X.DE
Xto call attention to the ECU user when work is being done
Xon other multiscreen consoles.
X
X.*s 2 "Function Key Mapping"
X
XAll function keys with the exception of the 
X.B Home ,
X.B BkTab
X(shift TAB),
Xand keypad unshifted 5 key can be programmed to emit selected strings.
XFor instance, when communicating with a Stratus computer,
Xdoing your best to emulate a VT100, a function key
Xmap might be constructed as follows:
X.DS L
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.DE
X
XFunction key mapping is placed in ~/.ecu/keys.  The Stratus example:
X.DS L
Xstratus
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.DE
X
XIf you have installed the mapkey file (as described in the release directory
Xin mapkeys/README), then ALT-a through ALT-z causes the "silent"
Xexecution of procedures 'alt_a.ep' for ALT-a, 'alt_b.ep' for ALT-b, etc.
XThe models subdirectory contains an example alt_h.ep which will home
Xthe cursor when ALT-h is pressed.  This facility allows the execution
Xof 26 procedures without ECU itself changing the video display at all.
XAny changes to the display (short of procedure errors) will result
Xsolely from the action of the invoked procedure.
XIf the procedure matching the ALT-[a-z] key pressed cannot be found,
Xthe bell is rung.
X
X.*s 2 "Built-in Modem Dialer"
X
XThe built-in ECU dialer supports modems which use the 
X.B
XHayes-style AT command set or most variants
X.R
X.B thereof .
XIt is used when HoneyDanBer UUCP is not installed or when there is no
Xentry in the /usr/lib/uucp/Devices file for the selected outgoing line.
X(For more information, see the later section titled "HoneyDanBer UUCP
XInterface".)
X
XThe built-in dialer uses files in the /usr/lib/ecu directory which
Xcontains modem initialization information.  Modem initialization
Xfilenames are made from concatenating the tty name with ".mi".  For
Xinstance, tty1a's initialization file is named "tty1a.mi".
X
XCommands for initializing the modem and for dialing may be specified in
Xa very flexible manner.  Separate init and dial strings for each legal
Xbaud rate, a single pair of strings for all baud rates or a combination
Xmay be specified.
X.DF L
X.hl
X.ce 1
XSample Modem Initialization Files
X
X#+-----------------------------------------------------------
X#  tty1a.mi - Microcom AX/9624c
X#------------------------------------------------------------
Xinit_>2400:ATS11=47X4S0=0S7=30\Q1\X1\N3   # baud rates > 2400
Xinit_default:ATS11=47X4S0=0S7=30\Q0\X0\N0 # other baud rates
Xdial_default:ATDT
X
X
X#+-----------------------------------------------------------
X#  tty2d.mi - USR Courier 2400
X#------------------------------------------------------------
Xinit_default:ATS11=47 X4 S0=0 S7=32
Xdial_default:ATDT
X
X.DE
X
X.*s 2 "File Transfer"
X
XECU supports numerous file transfer protocols: as of this writing,
XXMODEM, XMODEM/CRC, XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16,
XZMODEM/CRC-32, and Kermit are supported.  Although a seamless interface
X(there's some yuppie programmer newspeak) is provided to the user,
Xtransfer is facilitated by executing external programs.
X
XXMODEM, YMODEM and ZMODEM transfers (thanks to modified public domain
Xprograms by Chuck Forsberg) present dynamic status displays similar to
Xthe following:
X.DS L
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.DE
X
X.*s 2 "Procedures (Scripts)"
X
XA powerful, language-style procedure language is incorporated
Xinto ECU.  The lnaguage is described in later sections.
X
X.*s 2 "Initial (Startup) Procedure"
X
XAn
X.B
Xinitial procedure
X.R
Xmay be be specified to ECU either to initialize an interactive
Xsession or to execute an entirely unattended or "batch"
Xcommunication session.
X
X
X.*s 2 "Home Directory Files"
X
XECU control files reside in the .ecu subdirectory of
Xeach user's home directory.  For example, in home directory /usr/wht:
X.DS I
X/usr/wht/.ecu/dir     CD interactive command history file
X/usr/wht/.ecu/keys    function key mapping
X/usr/wht/.ecu/log     connect, file transfer history
X/usr/wht/.ecu/phone   dialing directory
X/usr/wht/.ecu/colors  colors used by ECU
X.DE
X
XThe .ecu directory also contains ECU procedure files
X(having the '.ep' extension).
X
X.*s 2 "Lock Files"
X
XECU maintains lock files in /usr/spool/uucp in accordance with the
XHoneyDanBer UUCP conventions (ASCII pids as 10-character strings
Xfollowed by a newline).  Lock files are created for both device names of
Xa line.  For example, both LCK..tty1A and LCK..tty1a are created when
X/dev/tty1a OR /dev/tty1A is selected.  See the later section titled
X"HoneyDanBer UUCP Interface".
X
X.*s 2 "Dial-In/Dial-Out Line Support"
X
XECU works with the SCO getty to support dialing out on a line
Xenabled for login.  After use of the line is complete,
XECU signals the system to restore incoming call status to
Xthe line.
XSee the later section titled "HoneyDanBer UUCP Interface".
X
X.*s 2 "Tools"
X
XCommands are provided for conversion of hexadecimal or decimal numbers
Xto and from ASCII equivalents.  For example, 26(10) == 0x1a == ^Z == SUB.
XFor details, refer to the description of the
X.B XA
Xand
X.B AX
Xinteractive commands.
X
X.*s 2 "Shared Memory 'Friend' Interface"
X
XECU maintains a copy of the received screen image (80 x 43
Xmaximum) and other
Xinformation in its shared memory segment.  Normally, this
Xinformation is used only by the transmitter and receiver
Xprocess.  However,  ECU supports the concept of a
X.B friend
Xprocess which may access the shared memory segment, perform
Xarbitrary auxiliary operations, read from and write to the
Xattached communications line and communicate resulting information
Xor status to an ECU procedure via a 1024-byte "friend"
Xdata area in the shared memory segment.
X
XThe procedure language supports the friend
Xprocess concept through commands and functions which allow
X.BL
X.LI
Xpassing the ECU shared memory segment id (shmid) to a called
Xprogram,
X.LI
Xreading a single character or string of characters from
Xscreen memory,
X.LI
Xreading cursor position information and
X.LI
Xreading and writing of characters, short or long integers and
Xstrings in the 1024-byte "friend" shared memory data area.
X.LE
X
XThis facility allows batch and interactive applications
Xto be developed with C programs which would be
Xtedious or impractical to implement with procedure language alone.
X
XFor more information, refer to the shared memory header file
X.B ecushm.h ,
Xthe
X.B ecufriend
Xsubdirectory of the software release
Xand to the description of the
X.B %shmid ,
X.B %cury
Xand
X.B %curx
Xprocedure functions
Xand the
X.B getf
Xand
X.B putf
Xprocedure commands.
SHAR_EOF
$TOUCH -am 0420004390 doc/_features.txt &&
chmod 0644 doc/_features.txt ||
echo "restore of doc/_features.txt failed"
set `wc -c doc/_features.txt`;Wc_c=$1
if test "$Wc_c" != "10391"; then
	echo original size 10391, current size $Wc_c
fi
# ============= doc/_hdb.txt ==============
echo "x - extracting doc/_hdb.txt (Text)"
sed 's/^X//' << 'SHAR_EOF' > doc/_hdb.txt &&
X.*s 2 "HoneyDanBer UUCP Interface"
X
X.*s 3 "UUCP Control Files"
X
X.*s 4 "/usr/lib/uucp/Devices"
X
XECU reads this file to determine what tty devices are available
Xfor outgoing calls.  The fifth field of each entry
Xmust contain either the full pathname
Xof a modem dialer program (with leading slash)
Xor the name of an entry in the /usr/lib/uucp/Dialers file.
XSysfiles support is not yet provided.  The Devices file must
Xbe named /usr/lib/uucp/Devices.
XFor more information, see "UUCP Dialers"
Xand "Choosing a Dialout Line" below.
X
X.*s 4 "/usr/lib/uucp/Dialers"
X
X.B Dialers
Xentries may be specified in the Devices entry. 
XSysfiles support is not yet provided.  The Dialers file must
Xbe named /usr/lib/uucp/Dialers.
X
X.*s 4 "/usr/lib/uucp/Sysfiles"
X
XSysfiles support is not yet provided.  The Devices and
XDialers files must have their default names.
X
X.*s 4 "/usr/lib/uucp/Systems"
X
XNo use is made of the
X.B Systems
Xfile at this time.  ECU provides the
Xequivalent function with its dialing directory.
X
X.*s 3 "Choosing a Dialout Line"
X
XWhen using the interactive
X.B dial
Xcommand, or when dialing from the initial menu,
Xif a logical or system name is specified, the directory
Xentry is fetched and examined.  If the tty field specifies
Xa value other than "Any", the specific line requested is
Xopened, if available, and dialing commences. 
XIf the specified line is not available, the dial attempt\
Xfails.
X
XIf "Any" is found in the dialing directory entry, then
XECU finds an avaialable line which matches the baud rate
Xspecified in the entry.  It does so by reading the
X.B Dialers
Xfile.
X
XIf a line matching the necessary baud rate is found (by
Xsearching /etc/utmp) to be a line enabled for login, but
Xwhich is currently idle, the getty interface, described below,
Xis used to acquire the line for outgoing use.
X
X.*s 3 "Getty Interface"
X
XWhen an idle dialin (enabled) line is chosen for dialout,
XECU makes use of
X.B /usr/lib/ecu/ecuungetty
Xto signal the line's getty to release the line (via SIGUSR1).
X.B Ecuungetty
Xis again employed to signal the getty to reacquire the
Xline when outgoing communication is complete (via SIGUSR2).
X
XEcuungetty is a privileged program, which must be owned by root
Xand have the setuid-on-execute bit set.  A encrypted id is passed
Xby ecu to ecuungetty to validate requests and to prevent abuse of
Xecuungetty by hackers, malcontents and other twentieth-century
Xphenomena.
X
X.*s 3 "UUCP Dialer Programs"
X
XIf the
X.B Devices
Xfile can be found in /usr/lib/uucp,
Xand a valid entry for the attached line can be found,
XECU will use the Dialers script or dialer program specified in the
X.B Devices
Xentry.
X
XSample enhanced modem dialer program sources may be found
Xin the uucp subdirectory of the distribution.
SHAR_EOF
$TOUCH -am 0406165190 doc/_hdb.txt &&
chmod 0644 doc/_hdb.txt ||
echo "restore of doc/_hdb.txt failed"
set `wc -c doc/_hdb.txt`;Wc_c=$1
if test "$Wc_c" != "2715"; then
	echo original size 2715, current size $Wc_c
fi
# ============= doc/_icmd.txt ==============
echo "x - extracting doc/_icmd.txt (Text)"
sed 's/^X//' << 'SHAR_EOF' > doc/_icmd.txt &&
X.*s 1 "Interactive Mode Commands"
X
XThe following is a partial list of commands available in the
Xinteractive (non-procedure) mode.
XIt is not necessary to
Xto enter the entire command in most cases.  The portion of
Xeach command which must be entered is capitalized in the
Xfollowing section headers.
X
XRefer to the sections titled Interactive Command History
Xand Line Editing for more information.
X
X.*s 2 "AX : ascii char to hex/oct/dec"
X.DS L
Xusage: ax [<param>]
X.DE
X
X<param> may be a single ASCII character, a standard ASCII
Xidentifier (such as ETX), or a two-character control
Xcharacter identifier (such as ^C, typed as a caret followed
Xby a C).
X
XIf no argument is supplied, a table of control characters
Xis printed containing decimal, octal, hex, ASCII identifiers
Xand two-character control character identifier.
X
X
X.*s 2 "BAud : set/display line baud rate"
X.DS L
Xusage: baud [<baud-rate>]
X.DE
X
X<baud-rate>, if specified, must be taken from the values
X110, 300, 600, 1200, 2400, 4800, 9600, 19200 and 38400.  On
Xsome systems, 19200 and 38400 may not be supported.  If baud
Xrate 110 is selected, 2 stop bits are automatically
Xspecified; other baud rates set 1 stop bit.  If <baud-rate>
Xis not supplied, the current baud rate is displayed.
X
XThe setting may be automatically changed as the result of a 'dial'
Xcommand.  See also the
X.B dial
Xand
X.B parity
Xcommand descriptions.
X
X
X.*s 2 "BN : all console event alarm"
X.DS L
Xusage: bn [ 0 | 1 | 2 ]
X.DE
X
X"bell notify":
XIf no argument is supplied, the current setting is
Xdisplayed.  Specifying 0 disables the facility; 1 causes an
Xaudible alarm to be sounded on all of the XENIX virtual
Xconsoles upon receipt of a bell (0x07) character from the
Xremote system; 2 causes an audible alarm to be sent to all
Xconsoles upon receipt of ANY characters from the remote
Xsystem.  A non-zero value also causes an audible alarm to be
Xsent to all console upon the successful completion of a 'redial'
Xcommand which must retry more than one redial
Xattempt or upon completion of a file transfer operation.
X
XDifferent alarms are sent depending upon the the type of
Xevent causing the alarms.
X
XBN is set to 1 when ECU begins executing.
X
X.*s 2 "BReak : send break to remote"
X.DS L
Xusage: break
X.DE
X
XThis command sends a break signal to the remote system.
X
X
X.*s 2 "CD : change current directory"
X.DS L
Xusage: cd [<dir-path>]
X.DE
X
XThis command allows you to change the working directory of
Xthe ECU process.  If <dir-path> is supplied, the previous
Xworking directory is displayed, and <dir-path> is made the
Xnew working directory.  A history of previous directory
Xchanges is maintained.  Entering the
X.B cd
Xcommand shows the numbered history list and allows you to select a new
Xdirectory by entering the number.  Other commands allow
Xdeletion of directories from the list or saving the list to
Xfile ~/.ecu/phone.  This file is automatically read at ECU
Xstartup, providing a convenient list of directories
Xavailable for quick selection.
X
X
X.*s 2 "DA : decimal to ascii char"
X.DS L
Xusage: da [<decimal-val>]
X.DE
X
X<decimal-val> is a decimal value between 0 and 0377; the
Xparity (sign) bit is stripped and the equivalent ASCII
Xcharacter value is displayed.
X
XIf no argument is supplied, a table of control characters
Xis printed containing decimal, octal, hex, ASCII identifiers
Xand two-character control character identifier.
X
X
X.*s 2 "Dial : dial remote destination"
X.DS L
Xusage: dial [<dial-param>]
X.DE
X
X<dial-param> may take one of two forms, a telephone number
Xto dial or a logical name which can be found in the user
Xphone directory (in file ~/.ecu/phone).
X
XIf a telephone number is supplied, the phone number is
Xdialed; you must first have set the desired baud rate and
Xparity using the
X.B baud
Xand
X.B parity
Xcommands.
X
XIf a logical name is entered, the phone directory is searched;
Xif the entry is found, the baud rate and parity
Xis automatically set.
XIf a procedure file can be found in the current directory
Xor the users home .ECU subdirectory whose name matches
Xthe logical name, then the procedure is executed with
Xthe argument '!INTERACTIVE'.
X
X
XIf <dial-param> is not supplied, then a screen-oriented
Xself-documenting directory manager is executed; you may
Xscan the the directory to select a number to dial, as well
Xas add, remove and edit entries.
XUpon dialing from the menu,
Xif a procedure file can be found in the current directory
Xor the users home .ECU subdirectory whose name matches
Xthe logical name, then the procedure is executed with
Xthe argument '!MENU'.
X
X
X.*s 2 "DO : perform procedure"
X.DS L
Xusage: do <procname> [<arg> ... ]
X.DE
X
XPerform ECU procedure.  Ecu searches for <procname>.ep in
Xthe current directory.  If the file is not found, the program
Xlooks for the file in the ~/.ECU directory.  One or more
Xarguments may be passed to the procedure.  Arguments
Xaare made available in the called procedure by use of the
X.B %argc
Xinteger function and
X.B %argv
Xstring function.
X
XUnlike arguments to the
X.B do
Xprocedure command, 
Xarguments to the
X.B do
Xinteractive command are not quoted and may not contain
Xembedded spaces or tabs.
X
X
X.*s 2 "DUplex : set/display duplex"
X.DS L
Xusage: duplex [ Full | Half ]
X.DE
X
XThis command specifies whether or not ECU is to locally echo
Xcharacters typed by you at the keyboard.  The overwhelming
Xmajority of remote systems provide the echo function, in
Xwhich case full duplex must be used.  For the rare occasions
Xwhen the remote system does not echo your keyboard input,
Xsetting half duplex will allow you to see what you are
Xtyping.
X
XWhen communicating with another terminal in a "teletype
Xconversation", setting half duplex is generally required.
XIn such cases, use of the 
X.B nl ,
X.B nlin
X.R
Xand
X.B nlout
Xcommands may also be required.
X
XThe default setting for duplex is full.
X
X
X.*s 2 "EXit : drop carrier, exit program"
X.DS L
Xusage: exit
X.DE
X
XThis command terminates ECU promptly.  If your modem does
Xnot drop carrier upon loss of Data Terminal Ready (DTR),
Xthe command will terminate ECU,
Xbut may leave the communications line off hook.
XIt is strongly recommended that you configure your
Xmodem to hang up the phone line when DTR drops.  A shorthand
Xversion of this command exists: '.' is equivalent to 
X.B exit .
X
X
X.*s 2 "FI : send text file to line"
X.DS L
Xusage: fi [<filename>]
X.DE
X
X"file insert": This command causes file characters to be inserted
Xinto the transmit data stream as though they had been entered at the
Xkeyboard.  No error correction is provided, although XON/XOFF flow
Xcontrol is obeyed.
X
XIf <filename> is not entered on the command line, a prompt for the
Xfilename is made.  Once the filename has been entered and file has
Xbeen opened, you are asked whether the file should be transmitted at
Xfull speed, by "echo pacing" or by a single line at a time.  You may
Xalso append an 'f', 'e' or 's' argument to the command line.
X
XIf your remote can tolerate it, full speed transmission is the
Xfastest.  Some systems are not capable of receiving large amount of
Xdata ("streaming data") without pauses.  Even with "full" speed
Xtransmission, some "pacing" (inter-character delay) is introduced to
Xease loading on the remote system.  Pressing the interrupt key (DEL)
Xstops a full speed transmission.
X
XBy specifying echo pacing, it is possible to increase the likelihood
Xof proper receipt.  Echo pacing reads the return data stream to
Xattempt to keep from overloading the remote.  Pressing the interrupt
Xkey (DEL) stops an echo paced transmission.
X
XAs a last resort, if echo pacing is not working for you, (i.e., you
Xare using the command in an environment where the remote does not
Xecho your characters), single line at a time transmission is
Xavailable.  With "single" line transmission, you must press the
Xspace key to initiate sending each line.  Pressing the 'ESC' or 's'
Xkey stops the transfer.
X
X.*s 2 "FKey : function key definition"
X.DS L
Xusage: fkey [<keyset_name>]
X.DE
X
XThis command allows the mapping of function keys F1-F12,
XPgUp, PgDn, End and Ins and the cursor up, down, left and
Xright keys to emit a desired sequence of characters when a
Xfunction key is pressed.  <keyset_name> specifies which key
Xset in ~/.ecu/keys is to be selected. Sample entry:
X.DS I
Xhayes
X    F1:escape:+ + +
X    F2:autoans:A T S 0 = 1 cr
X    F3:dial:A T D T
Xbbs
X    F1:cancel:^K
X    F2:yes:y cr
X.DE
X
XIf a keyset_name matches a logical dial directory name, it
Xis loaded when the number is dialed.
X
XThe characters in the mapped string may be any printable character
Xor one of the following:
X.DS I
Xmap -> character       map -> character
X---    -----------     ---    ------------
Xnul    0 000 00 ^@  |  dle    16 020 10 ^P
Xsoh    1 001 01 ^A  |  dc1    17 021 11 ^Q
Xstx    2 002 02 ^B  |  dc2    18 022 12 ^R
Xetx    3 003 03 ^C  |  dc3    19 023 13 ^S
Xeot    4 004 04 ^D  |  dc4    20 024 14 ^T
Xenq    5 005 05 ^E  |  nak    21 025 15 ^U
Xack    6 006 06 ^F  |  syn    22 026 16 ^V
Xbel    7 007 07 ^G  |  etb    23 027 17 ^W
Xbs     8 010 08 ^H  |  can    24 030 18 ^X
Xht     9 011 09 ^I  |  em     25 031 19 ^Y
Xnl    10 012 0a ^J  |  sub    26 032 1a ^Z
Xvt    11 013 0b ^K  |  esc    27 033 1b ^[
Xff    12 014 0c ^L  |  fs     28 034 1c ^\\
Xcr    13 015 0d ^M  |  gs     29 035 1d ^]
Xso    14 016 0e ^N  |  rs     30 036 1e ^^
Xsi    15 017 0f ^O  |  us     31 037 1f ^_
X.DE
X
X.*s 2 "HAngup : hang up modem"
X.DS L
Xusage: hangup
X.DE
X
XThis causes DTR to be momentarily interrupted,
Xterminating any outstanding connection.
XYour DCE (modem) must be able to drop carrier upon loss of DTR.
X
X.*s 2 "HElp : invoke help"
X.DS L
Xusage: help [<cmd-name>]
X.DE
X
XIssuing this command with no argument displays a list of
Xcommands followed by a request for a command for further
Xinformation.
X
X.*s 2 "LLp : set session log to /dev/lp"
X.DS L
Xusage: llp
X.DE
X
XThis command is a
Xshorthand version of 'log /dev/lp'.  /dev/lp must not be
Xunder the control of a print spooler.
X
X.*s 2 "LOFf : turn off session logging"
X.DS L
Xusage: loff
X.DE
X
XThis command is shorthand for 'log off'.  If session logging
Xis active, it is turned off.
X
X.*s 2 "LOG : session logging control"
X.DS L
Xusage: log [-s] [-r] [ | off | filename ]
X    -s "scratch" previous file contents; otherwise append
X    -r "raw" logging; otherwise non-printable characters
X        other than tab and newline are omitted from the log
X.DE
X
XThis command controls session logging; issuing the command
Xwith no argument causes the status of session logging to be
Xdisplayed.  The special argument 'off' causes active logging
Xto be terminated.  Other argument values cause logging to
Xstart using the argument as a filename.  Issuing a 
X.B log
Xcommand with a filename when logging is already active causes the
Xprevious file to be closed and the new file to be opened.
XSwitches are meaningful only when used in conjunction with a
Xfilename to start logging.
X
X
X.*s 2 "NL : display CR/LF mapping"
X.DS L
Xusage: nl
X.DE
X
XDisplay the current setting of CR/LF mapping.  For more
Xinformation, refer to the
X.B nlin
Xand
X.B nlout
Xcommand descriptions.
X
X
X.*s 2 "NLIn : set receive CR/LF mapping"
X.DS L
Xusage: nlin [<y-n>]
X.DE
X
XThis command controls whether or not a newline (NL/LF)
Xcharacter is sent to the screen upon receipt of a carriage
Xreturn (CR) from the remote system.  Most remote computers
Xsupply a NL after CR.  When communicating with another
Xterminal in a "teletype conversation", this is generally not
Xthe case (see also the 
X.B duplex
Xcommand).
X
XIssuing the command without <y-n> causes the current setting
Xto be displayed.  The format of <y-n> is flexible: 'y' or '1'
Xenables appending NL to CR, 'n' or '0' causes the
Xfeature to be disabled.
X
X
X.*s 2 "NLOut : set transmit CR/LF mapping"
X.DS L
Xusage: nlout [<y-n>]
X.DE
X
XThis command controls whether or not a newline (NL/LF)
Xcharacter is sent to the remote system upon transmission of
Xa carriage return (CR) entered by the keyboard.  Most remote
Xcomputers do not require (indeed "dislike") a NL after CR.
XWhen communicating with another terminal in a "teletype
Xconversation", this is generally not the case (see also the
X.B duplex
Xcommand).
X
XIssuing the command without <y-n> causes the current setting
Xto be displayed.  The format of <y-n> is flexible: 'y' or '1'
Xenables appending NL to CR, 'n' or '0' causes the
Xfeature to be disabled.
X
X
X.*s 2 "OA : octal to ascii char"
X.DS L
Xusage: oa [<octal-val>]
X.DE
X
X<octal-val> is a octal value between 0 and 0377; the parity
X(sign) bit is stripped and the equivalent ASCII character
Xvalue is displayed.
X
XIf no argument is supplied, a table of control characters
Xis printed containing decimal, octal, hex, ASCII identifiers
Xand two-character control character identifier.
X
X
X.*s 2 "PARity : set/display line parity"
X.DS L
Xusage: parity [ None | Even | Odd ]
X.DE
X
XThis command controls the parity of characters transmitted
Xby the keyboard.  Issuing the command with no argument
Xdisplays the current setting.  When the argument is
Xsupplied, only the first character is required.  Even or odd
Xparity implies seven data bits; no parity implies eight data
Xbits.  Parity of incoming characters is not checked.
X
XThe setting may be automatically changed as the result of an
Xinteractive or procedure
X.B dial
Xcommand.  See the 
X.B baud
Xand 
X.B dial
Xcommand descriptions.
X
X
X.*s 2 "PId : display process ids"
X.DS L
Xusage: pid
X.DE
X
XThis command displays the process id of the ECU transmitter
Xprocess, the ECU receiver process and the process ids of
XECU's parent and group.
X
X.*s 2 "PLog : procedure logging"
X.DS L
Xusage: plog [ <filename> | off]
X.DE
X
XThis command enables or disbles procedure logging.
X
X.*s 2 "PTrace : control procedure trace"
X.DS L
Xusage: ptrace [ 0 | 1 | on | off]
X.DE
X
XThis command controls whether or not procedure execution is
Xto be traced. Trace output is written to
Xthe screen and varys in its nature depending
Xupon the command being traced.  Specifically,
Xany change to a string or integer variable
Xis noted.  If tracing is enabled, the output will also be
Xwritten to the procedure log file (see the
X.b plog
Xinteractive and procedure commands).
XIssuing the command with no argument shows current status.
X
X.*s 2 "PWd : print working directory"
X.DS L
Xusage: pwd
X.DE
X
XThis command prints the current working directory of the ECU
Xprocess.
X
X
X.*s 2 "REDial : redial last number"
X.DS L
Xusage: redial [<retry-count> [<pause-interval>]]
X.DE
X
XThis command redials a number previously dialed with the 'dial' command.
XModem status is tested and multiple retries may be made.  <retry-count>
Xspecifies how many retries are to be made.  <pause-interval> specifies
Xhow many seconds the program pauses after a failure to connect.  You
Xmust specify <retry-count> in order to specify <pause-interval>.  The
Xdefault value for <retry-count> is 10, for <pause-interval> is 60.
X
XYou should know that in some jurisdictions, it is ILLEGAL to dial the
Xsame telephone number more than a specified number of times during some
Xinterval of time.  In any case, a <pause-interval> less than 15 seconds
Xis silently changed to 15 seconds.
X
X.*s 2 "REV : ECU revision/make date"
X.DS L
Xusage: rev
X.DE
X
XThis command displays ECU's revision, the transmitter process id'
Xand the date and time ECU was made.
X
X.*s 2 "RK : receive via C-Kermit"
X.DS L
Xusage: rk
X.DE
X
XThis command searches the PATH list for 'ckermit' (Columbia
XUniversity C-Kermit) and invokes it to receive files.
X
XThe file ~/.kermrc must be set up to have any desired
Xinitialization paraeters you desire.  Refer to C-Kermit
Xdocumentation for more information.
X
X
X.*s 2 "RS : receive via SEAlink"
X.DS L
Xusage: rs
X.DE
X
XThis command invokes a SEAlink receive protocol.
X
X.*s 2 "RTScts : control RTS/CTS flow control"
X.DS L
Xusage: bn [ 0 | 1 | y | n ]
X.DE
X
XThis command controls the RTS/CTS flow control feature of
Xthe SCO UNIX/XENIX line driver.
XIf no argument is supplied, the current setting is
Xdisplayed.  Specifying 0 or n disables the facility;
X1 or y causes RTS/CTS flow control to be enabled.
X
X.*s 2 "RX : receive via XMODEM/CRC"
X.DS L
Xusage: rx
X.DE
X
XThis command invokes ecurz to receive files from the remote
Xsystem using XMODEM/CRC.
X
XAfter entering the command, you are prompted as to whether
Xor not file CR/LF characters are to be converted to
Xnewlines.  If you are transferring text files from a system
Xwhich contain CR/LF line terminators, you must answer yes
Xto this question.  You should answer no when transferring
Xbinary files, such as executables, .arc files and the like.
XFile transfer progress is presented on a visual display.  To
Xabort the transfer, press your interrupt key (usually DEL
Xunless reset with stty(C)).
X
X
X.*s 2 "RY : receive via YMODEM Batch"
X.DS L
Xusage: ry
X.DE
X
XThis command invokes ecurz to receive files from the remote
Xsystem using YMODEM batch with CRC-16 error correction.  The
XYMODEM is "true YMODEM", not XMODEM-1k.  File transfer
Xprogress is presented on a visual display.  To abort the
Xtransfer, press your interrupt key (usually DEL unless reset
Xwith stty(C)).
X
X
X.*s 2 "RZ : receive via ZMODEM/CRC32"
X.DS L
Xusage: rz
X.DE
X
XThis command invokes ecurz to receive files from the remote
Xsystem using ZMODEM/CRC32.  File transfer progress is
Xpresented on a visual display.  To abort the transfer, press
Xyour interrupt key (usually DEL unless reset with stty(C)).
X
X
X.*s 2 "SDNAME : select screen dump file name"
X.DS L
Xusage: sdname [<filename>]
X.DE
X
XWhen the "cursor 5" key is pressed, the screen contents are
Xdumped to a file.  By default, this file is named '~/.ecu/screen.dump'.
XThis command either displays or changes the current screen
Xdump file name, depending upon whether or not a argument
Xis supplied.
X
XThe actions of this command have no effect on the
Xoperation of the
X.b scrdump
Xprocedure command.
X
X.*s 2 "SK : send via C-Kermit"
X.DS L
Xusage: sk [<file-list>]
X.DE
X
XThis command searches the PATH list for 'ckermit' (Columbia
XUniversity C-Kermit) and invokes it to send files.  The file
X~/.kermrc must be set up to have any desired initialization
Xparaeters you desire.
X
XAfter entering the command, you are prompted as to whether
Xor not file newline characters are to be converted to CR/LF.
XIf you are transferring text files to a system which
Xrequires CR/LF line terminators, you must answer yes to this
Xquestion.  You should answer no when transferring binary
Xfiles, such as executables, .arc files and the like.  You
Xare prompted to enter a list of files to send, which may
Xcontain one or more wildcard specifications.
X
XThe file ~/.kermrc must be set up to have any desired
Xinitialization arguments you desire.  Refer to C-Kermit
Xdocumentation for more information.
X
X
X.*s 2 "SS : send via SEAlink"
X.DS L
Xusage: ss [<file-list>]
X.DE
X
XThis command invokes a SEAlink file transmission protocol.
X.DS L
X
X .--[ Send SEAlink ]-------- dir: /u1/src/ecu ------------------.
X |                                                              |
X |  File(s) to send:                                            |
X |  ___________________________________________________________ |
X |                                                              |
X |    TAB:next  ^B:prev  END:perform transfer  ESC:abort        |
X `-- enter file(s) to send -------------------------------------'
X.DE
X
X.*s 2 "STat : connection status"
X.DS L
Xusage: stat
X.DE
X
XThis command displays statistics about ECU usage.
XExample display:
X.DS L
XDate/time: 06-14-1988 11:40:35 (UTC 15:40)
XTotal chars transmitted: 178
XTotal chars received:    3681
X
XDate/time: 06-14-1988 14:41:24 (UTC 18:41)
XConnected to CompuHost (555-1234) at 14:40:57
XParameters: 2400-N-1 Connect time: 00:01:27
XTotal chars transmitted: 234 (since CONNECT 142)
XTotal chars received:    2278 (since CONNECT 1478)
X.DE
X
X.*s 2 "SX : send via XMODEM/CRC"
X.DS L
Xusage: sx [<file-name>]
X.DE
X
XThis command invokes ecusz to send a file to the remote
Xsystem using XMODEM/CRC.
X
XAfter entering the command, you are prompted as to whether
Xor not file CR/LF characters are to be converted to
Xnewlines.  If you are transferring text files from a system
Xwhich contain CR/LF line terminators, you must answer yes
Xto this question.  You should answer no when transferring
Xbinary files, such as executables, .arc files and the like.
X
XYou are prompted to enter a filename to send.  File transfer
Xprogress is presented on a visual display.  To abort the
Xtransfer, press your interrupt key (usually DEL unless reset
Xwith stty(C)).
X.DS L
X .--[ Send XMODEM/CRC ]----- dir: /u1/src/ecu -----------.
X |                                                       |
X |  File to send:                                        |
X |  ____________________________________________________ |
X |                                                       |
X |  Binary: Y (no NL-CR/LF translation)                  |
X |                                                       |
X |   TAB:next  ^B:prev  END:perform transfer  ESC:abort  |
X `-- enter file(s) to send ------------------------------'
X.DE
X
X.*s 2 "SY : send via YMODEM Batch"
X.DS L
Xusage: sy [<file-list>]
X.DE
X
XThis command invokes ecusz to send file(s) to the remote
Xsystem using YMODEM/CRC.
X
XYou are prompted to enter filename(s) to send, which may
Xconsist of one or more wildcard specifications.  File
Xtransfer progress is presented on a visual display.  To
Xabort the transfer, press your interrupt key (usually DEL
Xunless reset with stty(C)).
X.DS L
X .--[ Send YMODEM/CRC ]----- dir: /u1/src/ecu -----------.
X |                                                       |
X |  File to send:                                        |
X |  ____________________________________________________ |
X |                                                       |
X |  Binary: Y (no NL-CR/LF translation)                  |
X |                                                       |
X |   TAB:next  ^B:prev  END:perform transfer  ESC:abort  |
X `-- enter file(s) to send ------------------------------'
X.DE
X
X.*s 2 "SZ : send via ZMODEM/CRC32"
X.DS L
Xusage: sz [<file-list>]
X.DE
X
XThis command invokes ecusz to send file(s) to the remote
Xsystem using ZMODEM/CRC32.
X
XYou are prompted to enter filename(s) to send, which may
Xconsist of one or more wildcard specifications.  File
Xtransfer progress is presented on a visual display.  To
Xabort the transfer, press your interrupt key (usually DEL
Xunless reset with stty(C)).
X
XNote: if you specify sending only newer files and the remote
Xreceiver does not support the feature, it may skip (reject)
Xall your files.  Retry the transfer specifying 'N' to 'Transfer
Xonly newer files'.
X.DS L
X.--[ Send ZMODEM/CRC32 ]--- dir: /tmp ---------------------------.
X|                                                                |
X|  File(s) to send:                                              |
X|  ckermit-5a-130                                                |
X|                                                                |
X|  Binary: Y (no NL-CR/LF translation)                           |
X|  Overwrite destination files: Y                                |
X|  Send full pathames:  N                                        |
X|  Transfer only newer files: N                                  |
X|                                                                |
X|     TAB:next  ^B:prev  END:perform transfer  ESC:abort         |
X`-- enter file(s) to send ---------------------------------------'
X`-- Y: no conversion, N: NLs converted to CR/LF -----------------'
X`-- Y: overwrite, N: protect destination files ------------------'
X`-- Y: full pathnames, N: strip directory portion from names ----'
X`-- Y: send only if source newer than destination, N send all ---'
X.DE
X
X.*s 2 "TIme : time of day"
X.DS L
Xusage: time
X.DE
X
XThis command displays the local date and time as well as the
Xcurrent UTC.
X
X.*s 2 "TTy : console tty name"
X.DS L
Xusage: tty
X.DE
X
XThis command displays the current console tty name.
X
X
X.*s 2 "XA : hex to ascii char"
X.DS L
Xusage: xa [<hex-val>]
X.DE
X
X<hex-val> is a hexadecimal value between 0 and FF; the
Xparity (sign) bit is stripped and the equivalent ASCII
Xcharacter value is displayed.
X
XIf no argument is supplied, a table of control characters
Xis printed containing decimal, octal, hex, ASCII identifiers
Xand two-character control character identifier.
X
X
X.*s 2 "! : execute shell"
X.DS L
Xusage: !
X       !<command>
X.DE
X
XThe '!' command is a shell escape.  The environment variable
XSHELL is read to determine what shell program to execute
X(e.g., /bin/sh, etc).  If '!' is entered by itself, an
Xinteractive shell is started; press ^D to exit back to ECU.
XIf <command> is supplied, it is executed by the shell with
Xan immediate return to ECU.
X
SHAR_EOF
$TOUCH -am 0420004590 doc/_icmd.txt &&
chmod 0644 doc/_icmd.txt ||
echo "restore of doc/_icmd.txt failed"
set `wc -c doc/_icmd.txt`;Wc_c=$1
if test "$Wc_c" != "24368"; then
	echo original size 24368, current size $Wc_c
fi
# ============= doc/_intro.txt ==============
echo "x - extracting doc/_intro.txt (Text)"
sed 's/^X//' << 'SHAR_EOF' > doc/_intro.txt &&
X.*s 1 "Introduction"
X
XECU (Extended Call Utility) is a personal communications program for
Xusers of SCO UNIX V.3.2/386 and XENIX V on 80286 and 80386 systems.
XThis preliminary document describes ECU functionality and implementation
Xfrom a technical point of view.
X
XECU provides the classic terminal communications facility of passing
Xkeyboard data to a serial line and incoming data to the computer video
Xdisplay.  In addition, a dialing directory, a function key mapping
Xfeature, and session logging are available.
X
XA very flexible procedure (script) language is also incorporated to
Xautomate many communications tasks.  Using shell scripts and ECU
Xprocedures, it is possible to use ECU in an entirely "unattended"
Xfashion for batch-style communications sessions.
X
XECU supports numerous file transfer protocols: as of this writing,
XXMODEM, XMODEM/CRC, XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16,
XZMODEM/CRC-32, Kermit and SEAlink are supported.
X
XThis document is preliminary and is
X.B NOT
Xwell written.  It attempts to get across to the inquiring mind how ECU
Xworks.  In places, an understanding of the UNIX programming model, UNIX,
XXENIX and UUCP constructs and asynchrononous communications techniques
Xis assumed.  In other places, the document goes into tedious detail
Xabout the simplest of concepts.
SHAR_EOF
$TOUCH -am 1202143389 doc/_intro.txt &&
chmod 0644 doc/_intro.txt ||
echo "restore of doc/_intro.txt failed"
set `wc -c doc/_intro.txt`;Wc_c=$1
if test "$Wc_c" != "1305"; then
	echo original size 1305, current size $Wc_c
fi
echo "End of part 26, continue with part 27"
exit 0


