From pa.dec.com!decwrl!sdd.hp.com!samsung!uunet!sparky!kent Sun Aug 11 15:30:45 PDT 1991
Article: 2569 of comp.sources.misc
Path: pa.dec.com!decwrl!sdd.hp.com!samsung!uunet!sparky!kent
From: wht@n4hgf.Mt-Park.GA.US (Warren Tucker)
Newsgroups: comp.sources.misc
Subject: v21i053:  ecu - ECU async comm package rev 3.10, Part01/37
Message-ID: <csm-v21i053=ecu.215539@sparky.imd.sterling.com>
Date: 3 Aug 91 03:35:01 GMT
Sender: kent@sparky.IMD.Sterling.COM (Kent Landfield)
Organization: Sterling Software, IMD
Lines: 1378
Approved: kent@sparky.imd.sterling.com
X-Md4-Signature: fad20d25267e6597fbfc590116484de6

Submitted-by: Warren Tucker <wht@n4hgf.Mt-Park.GA.US>
Posting-number: Volume 21, Issue 53
Archive-name: ecu/part01
Supersedes: ecu3: Volume 16, Issue 25-59
Environment: SCO, XENIX, ISC

This is ECU revision 3.10.  ECU is a asynchronous communications
program for SCO UNIX System V/386 or XENIX System V/286 or 386 on
AT-class computer systems.  Preliminary support for ISC 386/ix
2.2 seems to be at least partially functional.

It incorporates typical interactive communications capabilities
with a rich procedure language, an extended set of immediate
(interactive) commands, and several file transfer protocols.  The
operating system and development system is expected to be
revision 2.3.1 or later for SCO XENIX, and any production version
of SCO UNIX or ODT.  Porting to other System V environments
should now be much easier.

Support for gcc, ISC 2.2, "non-ANSI" consoles is better in this
release.  I use it (almost exclusively now) with a Metro Link
X11R4 xterm.

A new configuration method helps me to develop and makes it much
easier for you to configure ECU.

MANY THANKS to those who helped me improve the program,
especially upaya!tbetz, ache@hq.demos.su, spel@hippo.ru.ac.za,
bel@trout.nosc.mil, dhmadsen@icaen.uiowa.edu, dug@kd4nc,
jts@ki4xo, jsm@n4vu, lamy@glsys.in-berlin.de, cma@tridom,
tabbs!aris, redi!donovan, neal@clkwrka, extel@quagga.ru.ac.za,
mjb@mjbtn, tmcsys.uucp!lothar, mju@mudos.ann-arbor.mi.us and
rob@genrad.  There were lots of others and I know I've forgotten
someone who helped a great deal; I apologize.

Very special thanks go to Dion L  Johnson at SCO for his
untiring and generous support.  Also, many kudos the guys at
Metro Link for their excellent X11R4 package.  Yes, xecu has been
born and is in intensive care, but its chance of survival is
pretty good.

---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is ecu310, a shell archive (shar 3.46)
# made 07/27/1991 20:03 UTC by wht@n4hgf.Mt-Park.GA.US
# Source directory /u1/src/ecu
#
# existing files will NOT be overwritten unless -c is specified
#
# 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
# ------ ---------- ------------------------------------------
#  22387 -rw-r--r-- README
#   3848 -rw-r--r-- README.WY60
#   7274 -rw-r--r-- RELEASENOTES
#  21763 -rw-r--r-- ANCIENTHISTORY
#   1269 -rwxr-xr-x Configure
#    835 -rw-r--r-- ESOTERIC
#   7326 -rw-r--r-- Make.src
#    609 -rw-r--r-- ecufriend/Make.src
#   2205 -rw-r--r-- ecuungetty/Make.src
#   1501 -rw-r--r-- gendial/Make.src
#   2188 -rw-r--r-- help/Make.src
#   1938 -rw-r--r-- sea/Make.src
#   3057 -rw-r--r-- z/Make.src
#   4152 -rw-r--r-- afterlint.c
#   1678 -rw-r--r-- bamboozle.c
#    558 -rw-r--r-- cmdtbl.c
#  11287 -rw-r--r-- config.c
#   1666 -rw-r--r-- dialprog.h
#    595 -rw-r--r-- dlent.h
#    772 -rw-r--r-- dvent.h
#  10759 -rw-r--r-- ecu.c
#   5302 -rw-r--r-- ecu.h
#  22762 -rw-r--r-- ecuDCE.c
#   3778 -rw-r--r-- ecuLCK.c
#  12465 -rw-r--r-- ecuchdir.c
#  11733 -rw-r--r-- ecucmd.h
#    890 -rw-r--r-- ecucurses.h
#   3703 -rw-r--r-- ecudump.c
#   3980 -rw-r--r-- ecuerror.h
#   7178 -rw-r--r-- ecufinsert.c
#  14071 -rw-r--r-- ecufkey.c
#   1591 -rw-r--r-- ecufkey.h
#  12907 -rw-r--r-- ecufork.c
#    452 -rw-r--r-- ecufork.h
#  10590 -rw-r--r-- ecuicmaux.c
#  14733 -rw-r--r-- ecuicmd.c
#   7999 -rw-r--r-- ecuicmhelp.c
#   3627 -rw-r--r-- ecuicmhist.c
#    908 -rw-r--r-- ecukey.h
#  25604 -rw-r--r-- eculine.c
#   4302 -rw-r--r-- eculock.c
#   2346 -rw-r--r-- ecunumrev.c
#   1430 -rw-r--r-- ecupde.h
#  51343 -rw-r--r-- ecuphone.c
#   5615 -rw-r--r-- ecuphrase.c
#  31860 -rw-r--r-- ecurcvr.c
#   4313 -rw-r--r-- ecuscrdump.c
#  15490 -rw-r--r-- ecusetup.c
#   7097 -rw-r--r-- ecushm.c
#   3284 -rw-r--r-- ecushm.h
#  12291 -rw-r--r-- ecusighdl.c
#  15270 -rw-r--r-- ecutcap.c
#   4303 -rw-r--r-- ecutime.c
#  29441 -rw-r--r-- ecutty.c
#   1239 -rw-r--r-- ecutty.h
#   5667 -rw-r--r-- ecuuclc.c
#   1102 -rw-r--r-- ecuungetty.h
#   2683 -rw-r--r-- ecuusage.c
#  24595 -rw-r--r-- ecuutil.c
#    588 -rw-r--r-- ecuvmin.h
#  10243 -rw-r--r-- ecuwinutil.c
#  16174 -rw-r--r-- ecuxenix.c
#  24078 -rw-r--r-- ecuxfer.c
#   2023 -rw-r--r-- ecuxkey.h
#    947 -rw-r--r-- esd.h
#  18921 -rw-r--r-- esdutil.c
#   9680 -rw-r--r-- expresp.c
#   9136 -rw-r--r-- fasiintf.c
#  25528 -rw-r--r-- feval.c
#   2226 -rw-r--r-- feval.h
#   6835 -rw-r--r-- gint.c
#   5520 -rw-r--r-- gstr.c
#  23763 -rw-r--r-- hdbintf.c
#   2571 -rw-r--r-- kbdtest.c
#  10677 -rw-r--r-- kbdtest3.c
#  28761 -rw-r--r-- lint_args.h
#   1345 -rw-r--r-- logevent.c
#   1525 -rw-r--r-- makedirs.c
#   3908 -rw-r--r-- mkdirs.c
#   7793 -rw-r--r-- nonansikey.c
#     22 -rw-r--r-- patchlevel.h
#   1249 -rw-r--r-- pc_scr.h
#  26886 -rw-r--r-- pcmd.c
#  22952 -rw-r--r-- pcmdfile.c
#  13866 -rw-r--r-- pcmdif.c
#   8241 -rw-r--r-- pcmdtty.c
#   2736 -rw-r--r-- pcmdwhile.c
#  16424 -rw-r--r-- pcmdxfer.c
#   4430 -rw-r--r-- poutput.c
#   3984 -rw-r--r-- pprintf.c
#  17690 -rw-r--r-- proc.c
#    988 -rw-r--r-- proc.h
#   4464 -rw-r--r-- proc_error.c
#   3545 -rw-r--r-- procframe.c
#  10453 -rw-r--r-- regexp.c
#    566 -rw-r--r-- relop.h
#   6019 -rw-r--r-- smap.c
#   1476 -rw-r--r-- smap.h
#   1173 -rw-r--r-- stdio_lint.h
#   1148 -rw-r--r-- termecu.h
#   3907 -rw-r--r-- utmpstat.c
#    642 -rw-r--r-- utmpstatus.h
#  10091 -rw-r--r-- var.c
#    555 -rw-r--r-- var.h
#   3611 -rw-r--r-- bperr/bperr.c
#   9990 -rw-r--r-- help/helpgen.c
#   1015 -rw-r--r-- help/lint_args.h
#   1357 -rw-r--r-- help/util.c
#   2188 -rw-r--r-- help/Make.src
#  26787 -rw-r--r-- help/ecuhelp.src
#   4034 -rw-r--r-- ecuungetty/ecuungetty.c
#   1559 -rw-r--r-- z/baudtest.c
#  41407 -rw-r--r-- z/ecurz.c
#  42014 -rw-r--r-- z/ecusz.c
#   3125 -rw-r--r-- z/lint_args.h
#  15678 -rw-r--r-- z/zcommon.c
#  38433 -rw-r--r-- z/zcurses.c
#    224 -rw-r--r-- z/zdebug.c
#  16620 -rw-r--r-- z/zmodem.c
#   6517 -rw-r--r-- z/zmodem.h
#  35323 -rw-r--r-- sea/ecusea.c
#   2512 -rw-r--r-- sea/lint_args.h
#  21582 -rw-r--r-- sea/scurses.c
#  11247 -rw-r--r-- sea/sealink.doc
#   5213 -rw-r--r-- sea/sealink.imp
#    488 -rwxr-xr-x gendial/install_dialer
#  12305 -rw-r--r-- gendial/dceHA24.c
#  13317 -rw-r--r-- gendial/dceMC9624.c
#  14132 -rw-r--r-- gendial/dceMPAD.c
#  17777 -rw-r--r-- gendial/dceT1000.c
#  18705 -rw-r--r-- gendial/dceT2500.c
#  17953 -rw-r--r-- gendial/dceTBPlus.c
#  14126 -rw-r--r-- gendial/dceUSR24.c
#   5687 -rw-r--r-- gendial/dialer.h
#  26443 -rw-r--r-- gendial/gendial.c
#   9776 -rw-r--r-- gendial/template.c
#   1279 -rw-r--r-- fasi/Makefile
#     32 -rw-r--r-- fasi/Master
#    279 -rw-r--r-- fasi/Node
#     38 -rw-r--r-- fasi/PATCHLEVEL
#  27697 -rw-r--r-- fasi/README
#   6394 -rw-r--r-- fasi/README.FASI
#  23494 -rw-r--r-- fasi/RELEASENOTES
#   8680 -rw-r--r-- fasi/Space.c
#     52 -rw-r--r-- fasi/System
#    612 -rw-r--r-- fasi/digi-pc8.h
#  81145 -rw-r--r-- fasi/fas.c
#    370 -rwxr--r-- fasi/idfasi
#   2718 -rw-r--r-- ecufriend/ecufriend.c
#   2624 -rw-r--r-- mapkey/README
#   9889 -rw-r--r-- mapkey/keys.usa.ecu
#   1999 -rw-r--r-- xsel386/fixttiocom.c
#   2981 -rw-r--r-- xsel386/select-update
#   1237 -rw-r--r-- xsel386/select.asm
#  21402 -rw-r--r-- xsel386/select.txt
#    391 -rw-r--r-- xsel386/ttiocom.c
#    756 -rw-r--r-- doc/__rtscts.txt
#   6049 -rw-r--r-- doc/_basic.txt
#     39 -rw-r--r-- doc/_end.txt
#  30641 -rw-r--r-- doc/_features.txt
#   3940 -rw-r--r-- doc/_hdb.txt
#  30288 -rw-r--r-- doc/_icmd.txt
#   2184 -rw-r--r-- doc/_intro.txt
#  47681 -rw-r--r-- doc/_p_cmd.txt
#  11499 -rw-r--r-- doc/_p_ifunc.txt
#   5730 -rw-r--r-- doc/_p_param.txt
#   9865 -rw-r--r-- doc/_p_sfunc.txt
#   7302 -rw-r--r-- doc/_proc.txt
#   8276 -rw-r--r-- doc/_startup.txt
#    561 -rw-r--r-- doc/_top.txt
#    140 -rw-r--r-- doc/ecu.txt
#   2303 -rw-r--r-- doc/exits.txt
#    188 -rwxr-xr-x doc/runoff
#    682 -rw-r--r-- models/_connect.ep
#    781 -rw-r--r-- models/_connfail.ep
#    382 -rw-r--r-- models/_hangup.ep
#    673 -rw-r--r-- models/bsd_uname.ep
#    140 -rw-r--r-- models/colors
#     14 -rw-r--r-- models/dir
#    815 -rw-r--r-- models/f.ep
#   1667 -rw-r--r-- models/file_test.ep
#    317 -rw-r--r-- models/frame_test.ep
#    198 -rw-r--r-- models/gosub.ep
#    447 -rw-r--r-- models/goto_test.ep
#    420 -rw-r--r-- models/if_test.ep
#    322 -rw-r--r-- models/keys
#    515 -rw-r--r-- models/lookfortest.ep
#    578 -rw-r--r-- models/mhack_test.ep
#     40 -rw-r--r-- models/mkdir.ep
#  10409 -rw-r--r-- models/nonansikeys
#    877 -rw-r--r-- models/oneline.ep
#   2086 -rw-r--r-- models/opuslogin.ep
#   1110 -rw-r--r-- models/p.ep
#    162 -rw-r--r-- models/phone
#    117 -rw-r--r-- models/phrases
#    895 -rw-r--r-- models/ps.ep
#   1963 -rw-r--r-- models/put_ecu.ep
#    449 -rw-r--r-- models/ringcount.ep
#    503 -rw-r--r-- models/root.ep
#   4983 -rw-r--r-- models/rz_update.ep
#    643 -rw-r--r-- models/scm.ep
#    557 -rw-r--r-- models/senddate.ep
#   2490 -rw-r--r-- models/sf_test.ep
#   1465 -rw-r--r-- models/su.ep
#    766 -rw-r--r-- models/sysname.ep
#   4705 -rw-r----- models/sz_update.ep
#    127 -rw-r--r-- models/szall.ep
#    495 -rw-r--r-- models/tty1a.mi
#    446 -rw-r--r-- models/tty2d.mi
#   3689 -rw-r--r-- models/unixlogin.ep
#    708 -rwxr-xr-x zgcc
#   3418 -rw-r--r-- mkoldproto.l
#
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
# ============= README ==============
if test -f 'README' -a X"$1" != X"-c"; then
	echo 'x - skipping README (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting README (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'README' &&
X.--------------------------------------------------------.
X| ecu README - last revised Thu Jul 18 07:55:10 EDT 1991 |
X`--------------------------------------------------------'
X
XThis is ecu revision 3.10.  Ecu is a asynchronous communications
Xprogram for SCO UNIX System V/386 or XENIX System V/286 or 386 on
XAT-class computer systems.  It incorporates typical interactive
Xcommunications capabilities with a rich procedure language, an
Xextended set of immediate (interactive) commands, and several file
Xtransfer protocols.  The operating system and development system is
Xexpected to be revision 2.3.1 or later for SCO XENIX, and any
Xproduction version of SCO UNIX or ODT.  Preliminary support for ISC
X386/ix 2.2 seems to be at least partially functional.
X
XSupport for "non-ANSI" consoles is relatively stable and more
Xmature.  I use it (almost exclusively now) with a Metro Link X11R4
Xxterm.  Bugs are expected and reports will be greatly appreciated.
XThis release has been tested extensively with xterms (particularly
XMetrolink X11R4).  Your non-ANSI terminal must be fairly "smart",
Xwith insert/delete-line features, erase-to-end-of-line, etc..  See
Xthe manual and the note below named "KBDTEST3".
X
XGcc is supported for all programs in the release.  See the
Xconfiguration section and the note on gcc for important caveats
X
XMore progress has been made for a port to ISC 2.2.  The program
Xcompiles properly with the gcc or native cc compiler, but very
Xlittle testing has been done.  See ISC below.
X
XA new configuration method allows me to use the *wonderful* SCO
Xtargetable development features.  I made a XENIX/386 and /286
Xversion under UNIX.  The 386 version works but I've done something
Xto make the 286 version's sprintf hang and loop.  Please send bug
Xreports early if you have problems in the real 286 development
Xenvironment (I had to switch multiscreens and kill -1 the process
Xwith no time to delve).
X
XThe doc subdirectory has all of the .txt files used to produce
Xecu.man, the manual of sorts for the program.  A copy of it is
Xreluctantly included (net.bandwidth) for those who do not have
Xnroff.  I finally blew up my nroff with something related to
Xdocument length, so there are now two documents, ecu.man and
Xexits.man.  The latter is very short and is just a kludge since the
Xformer is as long as it can be.
X
X--------------------------------------------------------------------
X
XACKNOWLEDGMENTS
X
XMANY THANKS to those who helped me improve the program,
Xespecially upaya!tbetz, ache@hq.demos.su, spel@hippo.ru.ac.za,
Xbel@trout.nosc.mil, dhmadsen@icaen.uiowa.edu, dug@kd4nc,
Xjts@ki4xo, jsm@n4vu, lamy@glsys.in-berlin.de, cma@tridom,
Xtabbs!aris, redi!donovan, neal@clkwrka, extel@quagga.ru.ac.za,
Xmjb@mjbtn, tmcsys.uucp!lothar, mju@mudos.ann-arbor.mi.us
Xand rob@genrad.  There were lots of others and I know I've 
Xforgotten someone who helped a great deal; I apologize.
X
XVery special thanks go to Dion L. Johnson at SCO for his untiring
Xand generous support.  Also, many kudos the guys at Metro Link for
Xtheir excellent X11R4 package.  Yes, xecu has been born and is in
Xintensive care, but its chance of survival is pretty good.
X
X--------------------------------------------------------------------
X
XNOTE TO PRE-REVISION-3 USERS:
X
XThere have been *MANY* changes to ecu since revision 2.8.  It is
Xworth re-reading this file and *at least* the table of contents of
Xthe manual to see what's changed.  No effort has been spared to
Xremain compatible with the previous version, but some changes
Xwere necessary.
X
XNotably, your pre rev-3 ~/.ecu/phone file must have a special
Xline added manually to the top of it: #ECUPHONE.  See
Xmodels/phone for an example.
X
XIn general:
X
X    $i0 = 5
X    whilei $i0 != 0
X    {
X        do 'read-new-man'
X        ifs %logname != 'confused'
X            break
X        $i0 = $i0 - 1
X    }
X    ifs %logname == 'confused'
X		system 'mail -s help wht@n4hgf.Mt-Park.GA.US < flame.txt'
X
X--------------------------------------------------------------------
X
XNOTE TO PRE-REVISION-3.10 USERS:
X
X1. If you have been using the ALT-a through ALT-z single-key procedure
Xexecution, reread mapkeys/README.
X
X2. Termination of file transfers by SIGINT did not cause termination
Xof procedfure execution in pre-3.10 versions.  In this version, it does.
X
XThe appropriate manual sections have been updated to indicate:
XInteger variable $i0 receives the exit status from the transfer.  Note:
Xprocedure execution IS terminated by a SIGINT to the spawned file
Xtransfer process.  This is different than for versions prior to 3.10.
XIf $i0 is set to -1, the file transfer program did not begin.
X
XIf there is one serious flame on this, I'll make it run-time option
Xto get the old behavior.
X
X--------------------------------------------------------------------
X
XOn SCO, TTY devices must be named in the style of:
X
X     /dev/tty#N
X             ^^
X             ||
X             |`------ uppercase letter for modem control
X             |        lowercase for non-modem control
X             `--------digit (1-4)
X
X
XIf you are using FAS or other third-party driver, you may use ecu
Xwith ports not normally named in the /dev/tty#N style in one of two
Xways under UNIX and one way under XENIX:
X
X     1.  Under XENIX or UNIX, create a link to the port
X         with a compatible name:
X
X               ln /dev/ttyF00 /dev/tty1a
X               ln /dev/ttyFM00 /dev/tty1A
X
X     2.  Under UNIX, add additional lines to the
X         /etc/conf/node.d file and rebuild the kernel
X         environment (this is the recommended approach
X         for UNIX, as documented in FAS 2.08 and 2.09):
X
X     fas ttyF00  c   48
X     fas tty1a   c   48
X     fas ttyF01  c   49
X     fas tty1b   c   49
X     fas ttyFM00 c   208
X     fas tty1A   c   208
X     fas ttyFM01 c   209
X     fas tty1B   c   209
X
X--------------------------------------------------------------------
X
XThe SCO keyboard handler is invoked by detecting an "ansi" terminal
Xtype.  Other keyboards are supported by the "nonansikeys" file
Xfound in the models subdirectory of the distribution (after it
Xhas been copied to your home .ecu subdirectory as described
Xbelow and in the manual).
X
XIf you are not on an SCO multiscreen, but your terminal type
Xbegins with the four characters "ansi", you have a problem.
XCode hacking is necessary.  A workaround: invoke ecu with -N
Xto force non-ansi action.
X
X--------------------------------------------------------------------
X
XNone of this applies to direct-attached "AT" keyboards:
XTerminal keyboard models other than the SCO multiscreen are
Xstill under construction.  They work fairly well so long as you
Xfollow these suggestions (feel free to experiment with each to
Xsee if they are appropriate for your keyboard):
X
X1. After pressing ESCape, expect a delay before it is processed.
XWait for a second or so before pressing any other keys:
X
X2. Don't press and hold ESC or extended keys (avoid auto-repeat).
X
X3. After pressing a key you think should be accepted, if you hear
Xa bell or if nothing happens, wait a half a second or so and try
Xthe key again.
X
XGreater magicians than me have trouble in this area and many
Xhigh class programs don't get it right either. I've lost a
Xgreat deal of sleep over this one.  The problem is fairly
Xstraightforward to explain:
X
XMost function keys consist of multi-character sequences starting
Xwith ESCape.  How long do you wait after seeing an ESC before you
Xdecide the key is an "ESCape" and not the first character of a
Xfunction key sequence?  Not very long, huh?  But what if the
Xsource may be an xterm, a serial line, a telnet/rlogin network
Xconnection, or even a radio packet TNC.  The ESC could arrive a
Xlong time before the next character in a sequence.  There is no
Xsingle answer.  I try to do what I can to guess, but you may want
Xto play with the 'eto' interactive command to diddle the timeout.
XDon't make the timeout too short or ECU won't recognize the HOME
Xkey and you'll have to go somewhere and kill ECU from another
Xterminal.
X
X--------------------------------------------------------------------
X
XNOTE: SEAlink is provided as-is. I haven't used it since I
Xtested it in 1989.  It is still reported to work.
X
X--------------------------------------------------------------------
X
XMAKING AND INSTALLING
X
X1.   unshar all of the shars
X
X2.   type ./Configure
X     You must have your native compiler available for this.
X     If it unavailable and you have gcc, you can TRY:
X       gcc -fwritable-strings -fpcc-struct-return -o config config.c
X       ./config
X     If you are running *SCO UNIX*, add -DM_UNIX to the above gcc line.
X     This alternate procedure is not guarranteed to work with future
X     patchlevels and releases (There will always be a way to do it,
X     but I very likely will be counting on SCO MSC M_... predefines more
X     and more).
X
X3.   Configure will compile and run config. Answer the questions.
X     If you are using an SCO XENIX or UNIX or ISC 2.2 system,
X     answering the four or five simple questions is all that is
X     necessary to produce a usable configuration.  (If you are
X     trying to port it, make your best guess, hack the Makefiles
X     and send them to me with your patches.)
X
X     You will be asked whether the system is an SCO or ISC system.
X
X     If you answer SCO, you are asked which variety: XENIX/286,
X     XENIX/386 or UNIX/386.
X
X     Provided you did not opt for XENIX/286, you will be asked if
X     you want to use the native cc or gcc.
X
X     If you ask for gcc, you'll be asked if you have GCC 1.40 or
X     not.  An obscure minor bug in 1.39 was fixed in 1.40 and
X     it amounts to little effect as of this writing.  Answering
X     no is safe, but future patches make make better use of the
X     configuration information.
X
X     You will be asked for the directory to place the public
X     executables in.  The default is /usr/local/bin.  If the directory
X     does not exist, the install procedure will attempt to make it.
X
X     You will be asked for the directory to use for a private ecu
X     library.  The default is /usr/local/lib/ecu.  If the directory
X     does not exist, the install procedure will attempt to make it.
X
X     The config program will thank you (;->) and then build Makefiles
X     from the Make.src files in each appropriate subdirectory.
X
X     If you are planning to port to a system other than SCO UNIX,
X     SCO XENIX with development system 2.3 or later or ISC 2.2,
X     you may wish to examine and modify the Makefiles before proceeding.
X
X5.   Type 'make'.  Wait and watch a while.  This is a good time to
X     be reading over doc/ecu.man.
X
X6.   Su to root, if not already there, and type 'make install'.
X
X7.   Create a subdirectory in your home directory called '.ecu' (~/.ecu).
X
X8.   Copy models/* to ~/.ecu.  NOTE:  if you have used pre rev-3 versions
X     of ecu, skip this step, but you might want to look through the
X     models directory, since new examples have been added and some
X     have been revised.
X
X9.   The 'make install' doesn't do it, because *you* should make the
X     informed choice to do it, but you must make the /dev/tty??
X     and /usr/spool/uucp world readable and writable for ecu
X     to create lock files and to access serial lines.
X
X     Under XENIX:  chmod +rw /usr/spool/uucp /dev/tty?[A-Za-z]
X
X     Under UNIX    chmod +rw,g+s /usr/spool/uucp
X     or ISC:       chmod +rw /dev/tty?[A-Za-z] or whatever
X
X10.  The gendial subdirectory contains some rigorous, yet
X     experimental, SCO dialer programs for use with ecu, cu and uucico.
X     They are currently undocumented and "as-is."  I have used each
X     of them successfully at one time or another, but some have been
X     modified since they were last proven to work.
X
X     I use the T2500, Microcom 9624 and USR 2400 entry all the time.
X
X     Make sure you like the modem options before using one.
X     In particular, I enable remote access to Telebits.
X
X--------------------------------------------------------------------
XNotes:
X
X0. ISC:
XMore progress has been made for a port to ISC 2.2.  The
Xprogram compiles properly with the gcc or native cc compiler,
Xbut very little testing has been done.  The shared dial-in,
Xdial-out tty facility is very different between SCO and ISC and
Xtty naming is different.  Also, extended keys (like Home and End)
Xgenerate different codes.  I would appreciate any help and
Xcomments.  John "Pappy" Dashner (jmd@wa4cyb) is responsible for
Xthe bulk of the effort to date.  It still needs more work, though.
XThe Configure procedure will ask you if you are on an ISC or
XSCO system.  Answering 'i' should put you on the correct fork
Xof the Yellow Brick Road and you will get at least some
Xservice from it on virtual consoles using the "at386" terminal
Xtype if you install models/nonansikeys in your ~/ecu directory.
X
X1.  KERMIT:
XA XENIX/286 (lowest common denominator for SCO) binary of a suitable
Xckermit is compress-shared in the ckermit subdirectory.  You
Xshould unshar it and place it in the same directory as ecu.
XAlas, I do not know if ISC can run 286 XENIX binaries or
Xif this one will work.  I doubt it.
X
XIf you wish to build a compatible Kermit from scratch, obtain C
XKermit 4F from watsun.cc.columbia.edu (ftp 128.59.39.2,
X~kermit/ck4f) and apply the patches in the ckermit subdirectory.  If
Xyou really cannot get 4F from anywhere else, I can e-mail a copy as
X13 shars totaling 640Kb.
X
XI have every reason to believe that the stock C-Kermit 5 (when it
Xis released) will directly support ECU's use of it, even if patches
Xto ECU are required.  Watch this space.
X
X2.  SELECT(S)
XSCO XENIX V/386 Release 2.3.1 (and evidently 2.3.2) have a
Xbroken-dead, yet fixable, BSD-style select() feature.  Also,
Xselect() is missing from libc.a.  While ecu does not *require*
Xselect(S), it is much more efficient to use it.  The x386sel
Xsubdirectory in this release has information (thanks to
Xcsch@netcs, ivar@acc, and ag@elgar) on how to fix the kernel and
Xto add select() to libc.a.
X
XSelect(S) is fully functional in SCO UNIX.
X
XI found it in /usr/lib/libinet.a on the ISC system I used to
Xcompile for ISC.
X
X3.  SCO MULTISCREEN BUG
XThere has been a bug in the multiscreen driver for some time
Xwherein a MEDIA COPY (screen dump) sequence ("ESC [ 2 i") leaves
Xthe "ESC [ 2" part "active".  When a screen dump (Cursor 5)
Xcommand is given, I do the sacreen dump, then send a "l" to the
Xscreen to work around the bug ("ESC 2 [ l" unlocks the keyboard,
Xessentially a no-op).  If and when it gets fixed, you'll see an
X"l" show up on your screen after a screen dump sequence.  To fix
Xthis, comment out the
X#define MULTISCREEN_DUMP_BUG
Xat the top of ecuscrdump.c.
X
XNote that from multiscreens, screen dump produces a dump of the
Xactual screen contents, including ecu-generated output.  When
Xusing a non-multiscreen terminal, screen dump dumps only the
Xshared memory virtual screen as received from the host.
X
XIf, at a multiscreen, you wish a screen dump free of ecu output
X"pollution," use Shift-Tab (BkTab) to redraw the screen, then
Xperform the screen dump.  If you are not on a multiscreen, then the
Xscreen dump comes from the (sometimes inexact) screen memory
Xrepresentation and this step is not necessary.
X
X4. GCC
X
XIn case you didn't know, GCC is a great C compiler.  It generates excellent
Xcode and gives excellent diagnostics and warnings.  There are more
Xoptions available than for a Coup de Ville, so you have to be careful
Xif you get too fancy.  With Configure and config.c, I have tried to
Xchoose the best option set for ecu and it's utilities.
X
XI tried -pedantic and -ansi under SCO, but there
Xare just too many complaints about the development system heaader files:
X
X  1. #ident not allowed in ANSI C (boo hiss on ANSI <again>)
X  2. unterminated character constant in curses.h (an apostrophe
X     in a -comment- threw gcc for a loop)
X  3. bit fields not unsigned in machdep.h
X  4. blah etc. etc.
X
XI VERY reluctantly hacked my development system's header files so
XI could exploit the more critical error checking, but I do not
Xrecommend you do it for purposes of making ECU.  Hopefully since
XI have done it and fixed what gcc reported, you don't have to.
X
XAlso, gcc's idea of prototype validity is just too much for me.
XWith MSC ANSI, prototype arguments are tested at *reference* time
Xnot *definition* time.  Thus with MSC it is convenient to define
Xa file (like stdio_lint.h, lint_args.h, etc) with all the
Xprototypes in it and include it everywhere.  To do that with gcc,
Xyou'd have to include *every* header file you ever use just to
Xmake sure structs and types referred to are defined.
X
XThat is too much work, so I use gcc for most development
Xand MSC for prototype checking (I *run* gcc versions ;->).
XPrototypes in files like lint_args.h are turned off with gcc
Xcompiles.  (For non-MSC historians, the term "LINT_ARGS" dates
Xback to old MSC rev 3, where prototypes were enabled by a #define
XLINT_ARGS.  A lot of ecu's code dates back to 1985).  The
Xidentifier doesn't have anything to do with lint(1).
X
XOther than all this, the code fares pretty well with -ansi
X-pedantic I guess I am just not prepared for all the various
Xflavors of "ANSI" yet..
X
XWith the warnings I have enabled, you will get warnings about
Xvariables possibly clobbered by longjmp.  Worry not.
X
X5. AUTOMATIC PROTOTYPE GENERATION (ZGCC)
X
XSpeaking of prototypes, the MSC -Zg option for SCO MSC5-based
Xcompiler has been broken for a long time.  The first bug report
Xon it in the SCO databse is dated May, 1989.  I guess it is just
Xtoo esoteric a feature to fix.  I don't have access to a XENIX/386
Xsystem with an older 4.x-based compiler, so the zgcc/afterlint/mkoldproto
Xstuff doesn't do much good.  Sigh. I guess I'll look at cproto or
Xsomething similar.  In the meantime, beware of 'make protos' in the
XMakefiles.
X
X6.  XTERMS
X
XIf you are using an xterm to run ecu,
X
X1. the maximum geometry is 80x43
X2. 4014 emulation is untested
X3. you should use the following resources:
X
XXTerm*titeInhibit:     true # enable screen clear functions normally
XXTerm*curses:          true # curses bug fix
X
XIf titeInhibit fails to work (some versions which use terminfo as
Xtheir basis do fail), then remove the ti and te entries from
X/etc/termcap.
X
XThe file models/nonansikeys has keyboard definitions for a number
Xof xterm implementations.  Use kbdtest to determine
X
X7. SCO UNIX MEMMOVE() AND GCC
X
Xmemmove() is a very, very fast non-overlapping memory copy, but
Xsince it does not save certain registers it uses, calling from
XGCC can be tricky.  GCC does a fabulous job of grinding all it
Xcan out of the available registers; MSC doesn't make very good
Xuse of registers, er, I mean keeps a lot of registers for scratch
Xuse.  I've never seen 386 MSC use dx except as a side effect of
Xmultiply.  I guess that's what somebody (Gates?) meant by "tuning"
Xone compiler to meet many needs being adequate. Enough philosophy,
Xthough.
X
XI am using -fcall-used-{ax,bx,cx,dx} since in at least one
Xcase (ecufkey.c display_keyset()), rigorous optimization and
Xreally righteous register usage caused a call to strlen() to
Xscrew up since cx is not preserved by strlen.
X
Xstrlen:         push    edi
Xstrlen+0x1:     mov     edi,[esp+0x8]
Xstrlen+0x5:     xor     eax,eax               <-- goodbye ax 
Xstrlen+0x7:     mov     ecx,0xffffffff        <-- goodbye cx
Xstrlen+0xc:     repne   scasb
Xstrlen+0xe:     inc     ecx     
Xstrlen+0xf:     mov     eax,ecx 
Xstrlen+0x11:    not     eax
Xstrlen+0x13:    pop     edi
Xstrlen+0x14:    ret
X
Xmemmove:        push    ebp
Xmemmove+0x1:    mov     ebp,esp
Xmemmove+0x3:    mov     edx,edi               <-- move rather than push
Xmemmove+0x5:    mov     ebx,esi               <-- move rather than push
Xmemmove+0x7:    mov     esi,[ebp+0xc]
Xmemmove+0xa:    mov     edi,[ebp+0x8]
Xmemmove+0xd:    mov     eax,edi               <-- goodbye ax 
Xmemmove+0xf:    mov     ecx,[ebp+0x10]        <-- goodbye cx (OK w/MSC)
Xmemmove+0x12:   jcxz    memmove+0x43
Xmemmove+0x14:   cmp     edi,esi
Xmemmove+0x16:   jbe     memmove+0x2e
Xmemmove+0x18:   mov     eax,esi
Xmemmove+0x1a:   add     eax,ecx
Xmemmove+0x1c:   cmp     edi,eax
Xmemmove+0x1e:   jae     memmove+0x2e
Xmemmove+0x20:   mov     eax,edi
Xmemmove+0x22:   add     esi,ecx
Xmemmove+0x24:   add     edi,ecx
Xmemmove+0x26:   dec     esi
Xmemmove+0x27:   dec     edi
Xmemmove+0x28:   std
Xmemmove+0x29:   rep     movsb
Xmemmove+0x2b:   cld
Xmemmove+0x2c:   jmp     near memmove+0x43
Xmemmove+0x2e:   mov     eax,edi
Xmemmove+0x30:   test    Byte Ptr 0x1f:0x1,al
Xmemmove+0x36:   je      memmove+0x3a
Xmemmove+0x38:   movsb
Xmemmove+0x39:   dec     ecx
Xmemmove+0x3a:   shr     ecx,1
Xmemmove+0x3c:   rep     movsw
Xmemmove+0x3f:   adc     ecx,ecx
Xmemmove+0x41:   rep     movsb
Xmemmove+0x43:   mov     esi,ebx
Xmemmove+0x45:   mov     edi,edx
Xmemmove+0x47:   pop     ebp
Xmemmove+0x48:   ret
Xmemmove+0x49:   nop
Xmemmove+0x4a:   nop
Xmemmove+0x4b:   nop
X
X
X
X8. FAS/i
X
XFor the brave, an instrumented version of FAS 2.08 is included
Xwith this release for those who need driver instrumentation at
Xthe cost of performance and portability.  It is not supported (Do
XNot Contact Uwe Doering).  I am not at all interested in starting
Xa new tty faction.  Uwe has done a brilliant job of striking a
Xbalance between compatibility and performance.  I only name this
Xthing FAS/i to show the derivation from FAS while marking it as
Xdifferent.
X
X9. EXCEL LOGFILE INTERFACE
X
XThe excel logfile utility posted to comp.sources.misc for ECU 3.0
Xremains compatible with this release of ECU.
X
X10. KBDTEST3
X
XThis program is included to help you inspect your keyboard for
Xmaking nonansikeys entries or for preparing you to ask for help
Xfrom me in getting your keyboard functional.
X
X  cc -o kbdtest3 kbdtest.c
X  run it, following the instructions
X
XI would appreciate your mailing me the output file (kbdtest3.out)
Xfrom each keyboard you try out regardless of what you do otherwise
X(if your keyboard is not a SCO multiscreen or ISC virtual console).
XThis will assist me in making nonansikeys entries for futures
Xreleases.
X
X-------------------------------------------------------------------------
XThis program, it sources, objects and utilities are placed in the
Xpublic domain.   If you do anything nasty like modify the program
Xand sell it, refusing to give source to the buyer, may the creepy
XLotus slugs climb out of your septic tank and rust your Rolex.
X
XWarren H. Tucker     wht@n4hgf.Mt-Park.GA.US    {gatech,emory}!n4hgf!wht
XTuckerWare           (404)587-5766
X150 West Lake Drive
XRoswell, GA 30075
SHAR_EOF
$TOUCH -am 0727153691 'README' &&
chmod 0644 README ||
echo 'restore of README failed'
Wc_c="`wc -c < 'README'`"
test 22387 -eq "$Wc_c" ||
	echo 'README: original size 22387, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= README.WY60 ==============
if test -f 'README.WY60' -a X"$1" != X"-c"; then
	echo 'x - skipping README.WY60 (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting README.WY60 (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'README.WY60' &&
XThis is a hurriedly composed note to let you know what I know
Xabout Wyse 60 support (not much :-)).  I really cannot help
Xwith Wyse 60s any more than this.  Please ask me no questtions,
Xbut please, if you can and wish, provide me a robust explanation
Xof where I am wrong and I'll put in into the mill with profuse
Xthanks and credit.
X
X1. The Wyse 60 comes in several flavors of keytops and who knows
Xwhat quantity of ROM versions.  The one I have is an early "Native"
Xor "Non-PC-Keytop" version.
X
X2. The choice of keycodes (emitted character sequences) for the cursor
Xkeys are quite, quite stupid, though they seem to have had SOME form of
Xthinking behind them.  The arrow down key is a NEWLINE!  The cursor
Xleft is a BACKSPACE.
X
X3. You can redefine the keycodes emitted by keys.  I lost my Wyse
X60 manual several years ago, but with luck, you still have yours
Xand can follow in my feeble steps to finish the job I have started
Xand try to explain below.
X
X4. There are IS entries in the models/nonansikeys file entry for the
Xwyse60.  They are undocumented anywhere else.  These entries are
Xused by ECU only to spit initialization strings at the terminal in
Xthe order they appear in the file.
X
XIf you really don't want this stuff to happen, comment out or remove
Xthe IS strings, comment the ANSI-fied definitions and uncomment
Xthe un-ANSI-fied ones.  I omitted the braindead CUL and CUD entries, but
Xif you want them:
X
X#   CUL:CUL:        bs            # not useful (for reference only)
X#   CU5:CU5:                      # nyet
X    CUR:CUR:        ff
X    CUD:CUD:        nl # use only if you NEVER need to send a line feed
X
X5.  The strings I emit with the supplied IS strings are the same as
Xthe SCO 'wyse60ak' termcap entry 'ti' string.
X
X6.  You should really use the wyse60ak termcap entry, not the wyse60.
X
X7.  If you are not on SCO you probably don't have 'wyse60ak'.  I
Xhope the time-honored tradition of sharing termcap entries amongst
Xthe UNIX brethren will not bring writs and suits and "suits" against
Xme.  Here it is:
X
X#    Wyse 60
X#    Clearing of arrow keys useful in 'is' in case this entry is
X#    used after wy60ak entry was used.
X#
Xw7|wy60|wyse60|Wyse WY-60 with 80 column/24 line screen in wy60 mode:\
X	:is=\E`\072\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\EZ1+\177\EZ1,\177\EZ1-\177\EZ1.\177\EZ1\\\177\EZ1q\177\Ec72:\
X	:if=/usr/lib/tabset/std:pt:\
X	:CF=\E`0:CO=\E`1:\
X	:G1=3:G2=2:G3=1:G4=5:\
X	:GC=8:GD=0:GE=\EH^C:GF=7:GG#0:GH=\072:\
X	:GU==:GV=6:GR=4:GS=\EH^B:GL=9:\
X	:PU=\EJ:PD=\EK:mb=\EG2:me=\EG0:\
X	:al=4\EE:am:bs:bt=\EI:cd=100\EY:ce=\ET:cl=100\E+:\
X	:cm=\Ea%i%dR%dC:co#80:dc=11\EW:dl=5\ER:ei=\Er:im=\Eq:k0=^AI\r:\
X	:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
X	:k8=^AG\r:k9=^AH\r:kd=^J:kh=^~:kl=^H:kr=^L:ku=^K:\
X	:li#24:mi:nd=^L:se=\EG0:so=\EG4:ug#0:ue=\EG0:ul:up=^K:us=\EG8:\
X	:PN=\Ed#:PS=^T:hs:ts=\Ez(:fs=^M:
X#
X# Wy60ak:
X# Arrow keys are programmed to emit ANSI standard sequences.  Allows 
X# applications to distinguish between destructive Back Space and
X# non-destructive Left Arrow Key.  END and INS keys also emit
X# ANSI standard sequences.
X# Held out `te' string so that `is' will remain in effect
X# throughout login session.
X# On the Enhanced PC Keyboard, only the Cursor Keypad between the Main
X# Keypad and the Numeric Keypad is programmable.  These arrow keys
X# and special cursor motion keys will function as labeled when using
X# wy60ak with applications supporting the wy60ak entry. The Numeric
X# Keypad cursor motion keys will continue to emit their default values.
X#
XWA|wy60ak|wyse60ak|Wyse 60 in wy60 mode with ANSI arrow keys +:\
X	:is=\E`\072\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\EZ1+\E[A\177\EZ1,\E[B\177\EZ1-\E[D\177\EZ1.\E[C\177\EZ1\\\E[F\177\EZ1q\E[L\177\Ec72:\
X	:ti=\EZ1+\E[A\177\EZ1,\E[B\177\EZ1-\E[D\177\EZ1.\E[C\177\EZ1\\\E[F\177\EZ1q\E[L\177:\
X	:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:\
X	:EN=\E[F:\
X	:tc=wy60:
X
SHAR_EOF
$TOUCH -am 0718071891 'README.WY60' &&
chmod 0644 README.WY60 ||
echo 'restore of README.WY60 failed'
Wc_c="`wc -c < 'README.WY60'`"
test 3848 -eq "$Wc_c" ||
	echo 'README.WY60: original size 3848, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= RELEASENOTES ==============
if test -f 'RELEASENOTES' -a X"$1" != X"-c"; then
	echo 'x - skipping RELEASENOTES (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting RELEASENOTES (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'RELEASENOTES' &&
X
X============= Changes for ECU 3.10 =======================================
X
XThis file gives hints about what has changed.  Rereading or skimming
Xthe manual is highly recommended.  My apologies if some changes did
Xnot get reflected in the manual.  Please let me know.
X
X1. Add nice interactive and procedure commands and %nice integer function.
X
X2. Add the %uid and %gid integer function.
X
X3. If ECU starts setuid, always reset the uid to the real uid.
X   Previously this only happened if ECU was setuid to root.
X
X4. Made compatible with Metro Link X11R4 xterm under SCO UNIX/386.
X   To use:
X   a. include -DMETROLINK_X11R4 in CFLAGS of ECU compilation.
X   b. edit the models/nonansikeys file patched by this patch
X      to comment out the SCO ODT xterm key definiton and
X      uncomment the Metro Link X11R4 definition.
X      Follow other instructions you see in the nonansikey file.
X
X5. Fixed miscellaneous typos and misspelled words in models/nonansikeys.
X
X6. Environment variables LINES and COLS override termcap li and co
X   values like terminfo curses does.  This gives you the correct
X   size screen on xterms, but the ecu curses stuff still sees
X   the termcap description un altered, giving you shorter (usually 24 line)
X   dialing and help menus.
X
X7. Support is provided in nonansikeys for Metro Link's MetroX newest
X   xterm (the one that uses pty pseudottys).  (Some of the key
X   bindings are differerent and some .xinitrc and xterm resources
X   are required; see 'models/nonansikeys'.)
X
X8. The -N switch for the procedure commands sx, sy, sz, rx, ry, and
X   rz forces the "no curses" mode for file transfer.  This mode
X   uses brief, tty-style reporting of file transfer progress.
X   The "no curses" mode is automatically invoked if the console
X   is not a pty or multiscreen and has a lower baud rate than the
X   attached communication line.
X
X9. I added a dialer for the "generic Hayes-style 2400" (dialgHA24) and
X   for the USR Courier 2400 (dialgUSR24).  My USR is at least
X   6 years old and I don't even know if they still make them or
X   if it is the same modem.
X
X10. A new config procedure greatly simplifies making and installing.
X
X11. I don't know if this will get it or not, but to try and help
X    our European friends to be able to use alt_[a-z].ep, the keycodes
X    required in the mapkeys file have changed from
X      128 through 153 (0x80 through 0x99)     to
X      229 through 249 (0xE0 through 0xF9).
X    Reread mapkeys/README.
X
X12. Termination of file transfers by SIGINT did not cause termination
X    of procedfure execution in pre-3.10 versions.  In this version, it does.
X
X    The appropriate manual sections have been updated to indicate:
X
X    Integer variable $i0 receives the exit status from the transfer.
X    Note: procedure execution IS terminated by a SIGINT to the spawned
X    file transfer process.  This is different than for versions prior
X    to 3.10.  If $i0 is set to -1, the file transfer program did not
X    begin.
X
X13. kbdtest3 is included to help figure out nonansikey configurations.
X    see models/nonansikeys.
X
X14. SCO UNIX MEMMOVE() AND GCC
X
Xmemmove() is a very, very fast non-overlapping memory copy, but
Xsince it does not save certain registers it uses, calling from
XGCC can be tricky.  GCC does a fabulous job of grinding all it
Xcan out of the available registers; MSC doesn't make very good
Xuse of registers, er, I mean keeps a lot of registers for scratch
Xuse.  I've never seen 386 MSC use dx except as a side effect of
Xmultiply.  I guess that's what somebody (Gates?) meant by "tuning"
Xone compiler to meet many needs being adequate. Enough philosophy,
Xthough.
X
XI am using of -fcall-save-{ax,bx,cx,dx} since in at least one
Xcase (ecufkey.c display_keyset()), rigorous optimization and
Xreally righteous register usage caused a call to strlen() to
Xscrew up since cx is not preserved by strlen.
X
Xstrlen:         push    edi
Xstrlen+0x1:     mov     edi,[esp+0x8]
Xstrlen+0x5:     xor     eax,eax               <-- goodbye ax 
Xstrlen+0x7:     mov     ecx,0xffffffff        <-- goodbye cx
Xstrlen+0xc:     repne   scasb
Xstrlen+0xe:     inc     ecx     
Xstrlen+0xf:     mov     eax,ecx 
Xstrlen+0x11:    not     eax
Xstrlen+0x13:    pop     edi
Xstrlen+0x14:    ret
X
Xmemmove:        push    ebp
Xmemmove+0x1:    mov     ebp,esp
Xmemmove+0x3:    mov     edx,edi               <-- move rather than push
Xmemmove+0x5:    mov     ebx,esi               <-- move rather than push
Xmemmove+0x7:    mov     esi,[ebp+0xc]
Xmemmove+0xa:    mov     edi,[ebp+0x8]
Xmemmove+0xd:    mov     eax,edi               <-- goodbye ax 
Xmemmove+0xf:    mov     ecx,[ebp+0x10]        <-- goodbye cx (OK w/MSC)
Xmemmove+0x12:   jcxz    memmove+0x43
Xmemmove+0x14:   cmp     edi,esi
Xmemmove+0x16:   jbe     memmove+0x2e
Xmemmove+0x18:   mov     eax,esi
Xmemmove+0x1a:   add     eax,ecx
Xmemmove+0x1c:   cmp     edi,eax
Xmemmove+0x1e:   jae     memmove+0x2e
Xmemmove+0x20:   mov     eax,edi
Xmemmove+0x22:   add     esi,ecx
Xmemmove+0x24:   add     edi,ecx
Xmemmove+0x26:   dec     esi
Xmemmove+0x27:   dec     edi
Xmemmove+0x28:   std
Xmemmove+0x29:   rep     movsb
Xmemmove+0x2b:   cld
Xmemmove+0x2c:   jmp     near memmove+0x43
Xmemmove+0x2e:   mov     eax,edi
Xmemmove+0x30:   test    Byte Ptr 0x1f:0x1,al
Xmemmove+0x36:   je      memmove+0x3a
Xmemmove+0x38:   movsb
Xmemmove+0x39:   dec     ecx
Xmemmove+0x3a:   shr     ecx,1
Xmemmove+0x3c:   rep     movsw
Xmemmove+0x3f:   adc     ecx,ecx
Xmemmove+0x41:   rep     movsb
Xmemmove+0x43:   mov     esi,ebx
Xmemmove+0x45:   mov     edi,edx
Xmemmove+0x47:   pop     ebp
Xmemmove+0x48:   ret
Xmemmove+0x49:   nop
Xmemmove+0x4a:   nop
Xmemmove+0x4b:   nop
X
X15.  A documented feature is that upon connecting to a remote
Xdialed through the directory, if a 'fkey' key set from ~/.ecu/keys 
Xmatches the directory name, the key set is automatically loaded.
XThis feature has never worked (I never used it or tested it.)
XRecently I told someone they could use it and they reported it
Xdid not work.  It does now.
X
X16. The example file models/sz_update.ep was treating skipped files
Xas a failed transfer.  This was fixed.
X
X17. Interactive and procedure commands 'pushd' and 'popd' were added.
X
X18.  Adding pushd and popd documentation made ecu.man too long
Xgiving me "word overflow" and a core dump from my nroff.  So,
Xthere are now two documents, ecu.man and exits.man.  The latter
Xis very short and is just a kludge since the former is as long as
Xit can be.
X
X19. Added the procedure rlog command for procedure control of
Xreceiver logging.
X
X20. Added _initial.ep, _connect.ep and _hangup.ep. See "Special
XProcedures" in the manual.
X
X21. The use of #ifdef GCC140 is made to take advantage of a
Xassembly source generation bug fix in gcc 1.40.
X
X22. Running ecu with no pre-existing phone directory and specifying
Xa logical phone number (directory entry) to dial caused erratic
Xbehavior or core dump.  This has been fixed.  Thanks for the report
Xfrom mju@mudos.ann-arbor.mi.us.  He did a good job of testing
Xan alpha version of 3.10.
X
X23. Pressing an invalid function key during interactive command
Xentry used to destroy the string being entered.  This has
Xbeen fixed.
X
X24. The ESCape vs. function key keyboard input discrimination
Xalgorithm has been improved.  Fewer, if any, function keys will now
Xmisinterpreted as ESCape keys followed by "junk."
SHAR_EOF
$TOUCH -am 0718060091 'RELEASENOTES' &&
chmod 0644 RELEASENOTES ||
echo 'restore of RELEASENOTES failed'
Wc_c="`wc -c < 'RELEASENOTES'`"
test 7274 -eq "$Wc_c" ||
	echo 'RELEASENOTES: original size 7274, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= ANCIENTHISTORY ==============
if test -f 'ANCIENTHISTORY' -a X"$1" != X"-c"; then
	echo 'x - skipping ANCIENTHISTORY (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting ANCIENTHISTORY (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ANCIENTHISTORY' &&
XANCIENTHISTORY - Revision History for ECU
X-----------------------------------------
X
XChanges and fixes since 'unet1' alt.sources release:
X
X1. The uucp lock file code has been upgraded.  When I added uucp dialer
Xsupport a while back, I just hacked the necessities needed for
XecuLCK.c and put the new code into hdbintf.c.  Also, I don't try
Xto create two lock files anymore because there is no need.
X
X2. In esdutil.c, skip_paren could return a wrong error code.
X
X3.  ctype.h style integer functions were added to the procedure
Xlanguage: %isalnum, %isalpha, %isascii, %iscntrl, %isdigit, %isgraph,
X%islower, %isprint, %ispunct, %isspace, %isupper and %isxdigit.
X
X4. Logical operators were added to the ifi, ifs, whilei and whiles
Xsyntax, making possible:
X   ifi $i0 ==5 || %i30 == 6
X       statement(s)
XThis still ain't perl, but things are a little better.
X
X5.  %right() was broken.  strfunc_right() in feval.c returned a random
Xerror code on success.
X
X6.  A copy of the screen as received from the line is now kept in shared
Xmemory.  Three new functions use this feature: integer functions %curx
Xand %cury and string function %screen().  There are limitations, so read
Xthe appropriate manual sections.
X
X7.  Since some program may want to use the shared memory segment to read
Xthe screen, the shared memory segment is no longer RMID'd as soon as it
Xis created.  The integer function %shmid returns the shared memory
Xsegment id for passing to a called program.  Many other interesting
Xthings are kept in shared memory to enable efficient use of auxiliary
Xprograms.  See echshm.h and ecufriend/ecufriend.c.
X
X8.  Procedure tracing of string variable assignment prints "unprintable"
Xcharacters in the style of '^A' rather than clobbering your screen.
X
X9.  kill_rcvr_process is better at terminating the receiver process.
X
X10.  Screen dumps having extra repeated lines at the bottom won't happen
Xany more.  (The restarted rcvr process was getting a copy of the stdio
Xbuffers to flush too :-/).
X
X11.  By modifying the mapkey file to return certain codes for ALT-A
Xthrough ALT-Z, it is possible to have 26 procedures (named
X'alt_[a-z].ep') to execute "silently" by pressing one key (OK, two keys:
XALT and a-z).  See mapkeys/README, /usr/lib/keybord/keys and mapkey(ADM).
X
X12.  The receiver was not getting properly informed when the parity of
Xthe line was changed with the interactive or procedure parity command.
XSo it could improperly mask or fail to mask incoming characters.
X
X13.  The crypt library is no longer required.  Indeed, the default is
Xnot to use crypt.  The paranoia required for "safe" big systems is not
Xalways warranted on smaller PCs.  You can still get extra protection
Xagainst false ecuungetty action by using crypt if you want (and in the
Xcase of non-USA user, if you CAN).
X
X14.  A running count is displayed on the screen of the number of files
Xskipped during a ZMODEM transfer.
X
X15.  You can now specify the colors used by ecu when it makes an
Xinternal choice to change colors.  See ecu.man.
X
X16.  UNIX, thanks to POSIX, is loathe to accept a filename of greater
Xthan 14 characters when creating a file.  The XMODEM, YMODEM and
XZMODEM file receive protocols have been modified to truncate long
Xfilenames.  A patch to UNIX libsys.a to put the POSIX people back in
Xtheir place has been floating around the net.
X
X--------------------------------------------------------------------
X
XChanges and fixes since '2.10' patch level 6:
X
X1.  The nap procedure command has an additional feature, the -m
X    switch.  -m specifies the <int> parameter is a period of
X    milliseconds to suspend execution.  Without -m, <int> is
X    tenths of seconds.
X
X    nap 2 suspends execution .2 seconds
X    nap -m 250 suspends execution 250 milliseconds.
X
X
X--------------------------------------------------------------------
X
XChanges and fixes since '2.10' patch level 7:
X
X1.  added rname procedure command to allow overriding connected
X    remote name.
X
X2.  improve banner at top of session log file
X
X3.  add popen and pclose procedure commands
X
X4.  Added facility for restoring receiver display after the
X    interactive help command, or on demand using the BkTab key
X    (shift TAB).
X
X5.  fix bug whereby partial function names could be enetered
X    (e.g., '%col', '%colo', '%color' all recognized for '%colors').
X
X6.  Add the %mhack integer function, returning the life of the
X    ecu process in milliseconds.  (added mhack_test.ep to models)
X
X7.  A better representation of the received screen is kept in
X    shared memory.
X
X8.  The X, Y and ZMODEM transfer screens show per-file elapsed
X    time transfers as well as session elapsed time.
X
X9.  A modified TBIT UUCP dialer, IMHO highly optimized, is is the
X    uucp directory.
X
X10. A bug in automatic creation of string variables was fixed.
X
X11. Certain endless loops in procedure execution could not be
X    interrupted.
X
X--------------------------------------------------------------------
X
XChanges and fixes since '2.72'
X
X1.  The 'expresp' procedure command has been added:
X    usage: expresp [-v[v...]] <exp-resp-str> [<timeout_msecs>]
X    a.  -v turns on script debugging
X    b.  multiple v's (e.g., -v -vv, -vvv) up to 3 'v's produce
X        more verbose debug output
X    c.  <exp-resp-str> is as defined in /usr/lib/ecu/Dialers:
X        Meaning of some of the escape characters:
X        \p - pause (approximately 1/4-1/2 second delay)
X        \d - delay (2 seconds)
X        \D - phone number/token
X        \T - phone number with Dialcodes and character translation
X        \N - null byte
X        \K - insert a BREAK
X        \E - turn on echo checking (for slow devices)
X        \e - turn off echo checking
X        \r - carriage return
X        \c - no new-line
X        \n - send new-line
X        \nnn - send octal number
X        Speed - Hayes-specific speed-adaptive connect handler
X    d.  <timeout_msecs> specifies the optional delay for waiting
X        on expect strings;  it defaults to 10 seconds; the timeout
X        for 'Speed' expects is fixed at 90 seconds
X
X2.  Added partial support for HDB Dialers scripts
X    a.  \E echo checking is not actually performed, but
X        essentially the same effect is achieved by pacing
X        output to the modem
X    b.  The Speed expect string works only for modems
X        which return "CONNECT xxxx" connect result codes.
X    c.  Modems which return status codes during dialing, such
X        as the Trailblazer RRING, will cause Speed processing
X        to fail. Fortunately, RRING can be disabled (you should use 
X        the dialTBIT program anyway)
X    d.  the timeout for non-Speed expects is 10 seconds
X    e.  the timeout for 'Speed' expects is 90 seconds
X
X
X3.  Note, the SCO HDB documentation states that a dialer
X    program may be specified by either a complete pathname
X    or a partial pathname in /usr/lib/uucp.  Ecu requires a
X    complete pathname.
X
X4.  The string functions %dayz, %monthz, %datez, %timez and %timesz
X    have been added to retreive UTC (Z) date and time values.
X
X5.  If no dialing action results from a visit to the dialing directory,
X    the previous receiver screen contents is redisplayed.
X
X6.  The 'P' option to the 'fi' (file insert) interactive command
X    has been added.  In this mode, the file is sent character-by-
X    character to the line with 20 milliseconds pacing between each
X    character.
X
X7.  Previously, if you started ecu on an HDB machine and no line was
X    available at the specified (or default) baudrate, ecu would exit
X    with an error message.  The workaround was to explicitly state the
X    desired device with a -l argument.  The error (now as a warning) is
X    still printed, but the setup screen or initial procedure is allowed
X    to execute with tty1a forced to be the line (though this will likely
X    fail if tty1a is in Devices since ecu has already determined tty1a
X    is busy).
X
X8.  When a string is requested from the keyboard, the Cursor Left,
X    Cursor Right and Ins keys are functional, allowing editing of the
X    string.  Pressing Ins toggles insert mode.  In non-curses modes,
X    (e.g., after HOME pressed and before Enter) ^L (or ^R) displays the
X    insert mode state and redisplays the string, after which editing may
X    continue.
X
X9.  Though not appearing on the help line, the cursor up and cursor down
X    keys work in the dialing directory in a fashion similar to 'u' and 'd',
X    respectively.
X
X10. Warning: using vidi(C) to change the screen configuration while
X    ecu is running, (e.g. Home !vidi xxx) can cause the ecu to later
X    fault and dump core.  Why this occurs is not known yet.
X
X11. After pressing Home, pressing it again gives you access to a 
X    command history mechanism.  Pressing cursor up and cursor down
X    while in this mode causes less and more recent commands to be displayed.
X    You can use Ins, Cursor Left, Cursor Right and Backspace, ^L/^R to
X    edit the old entry as desired, and then press Enter. (see #8 above).
X    Users of ksh will find this a familiar feature.
X
X--------------------------------------------------------------------
X
XChanges and fixes since '2.80'
X
X1.  It was not possible to interrupt the built-in modem dialer
X    modem initialization sequence.  SIGINT will do it now.
X
X2.  A Zmodem window size may now be specified when sending files.
X    The file transfer status screen shows the number of unacknowleged
SHAR_EOF
true || echo 'restore of ANCIENTHISTORY failed'
fi
echo 'End of ecu310 part 1'
echo 'File ANCIENTHISTORY 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.


