wjm 23-sep-996: My collection of unix/tcpip-related ZT programs consists of:

	ZT4.C	the VMS end (built for UCX via ZT-MAKE => ZT4_UCX.EXE).
		Contains some obsolete(!) code for NETLIB V1 support

	ZTNS4.C		unix main program

	ZTNS4.H		definitions common to ZT4 and ZTNS4

	ZTNS4VMS.H	VMS definitions required by ZTNS4.C

	TAPRD.*_C	subroutines implementing tape operations
			(* = AIX, DECOSF1 (also works on ULTRIX)).
			tape device given by environment variable
			("TAPE" by default)

	DSKTAP.C	(replaces TAPRD) tape emulation on disk file
	NULTAP.C	(replaces TAPRD) tape "null device"

	TDUP.C		main program for copying between "real" tape,
			DSKTAP, and NULTAP (the latter for the sake
			of listing only). MAKEFILE.* knows how to
			build some combinations

	CTAPE.C,
	CTAPE2.C	"cache tape" routines (go in between main program
			and TAPRD) that work around non-functional tape
			I/O operations (e.g. "skip record" that won't
			work across tape marks). MAEFILE.* knows how to
			build a lot of combinations ...

	MAKEFILE.*	the "makefile"s expect to operate in a 	subdirectory
			that contains the machine-specific "taprd.c";
			the reamining code is taken from the (common) 
			parent directory.

ZTNS4 takes a port number as argument, where it listens for a connection
from ZT4.

ZT4 has 3 optional argments:  ZTdevice:  host  port
	It should be invoked _after_ ZTNS4 has started listening.

Performace issue: ZT4/ZTNS4 use the same protocol messages as ZT2/ZTNS2.
	In that protocol, data transfers require both ends to send several
	messages. With TCP/IP, by default, messages are delayed for a short
	while ("socket option" TCP_NODELAY turns this off). Thruput is very
	low without the latter option. NETLIB V1 wouldn't set it for UCX,
	that's why I gave up NETLIB support (there is some *hack* in ZT4
	for setting the option when both UCX and NETLIB are defined, which
	most likely is version-specific). The "socket" interface now used
	in ZT4 should be o.k. also with other TCP/IP packages.
