ftp.nice.ch/pub/next/unix/communication/tip_zmodem.N.bs.tar.gz#/zm_tip

Makefile
 
README.NeXT
 
README.TIPX
 
acu.c
[View acu.c] 
aculib/
 
acutab.c
[View acutab.c] 
cmds.c
[View cmds.c] 
cmdtab.c
[View cmdtab.c] 
cu.c
[View cu.c] 
hayes.c
[View hayes.c] 
hunt.c
[View hunt.c] 
log.c
[View log.c] 
partab.c
[View partab.c] 
pathnames.h
[View pathnames.h] 
remcap.c
[View remcap.c] 
remote.c
[View remote.c] 
tip.1
 
tip.c
[View tip.c] 
tip.h
[View tip.h] 
tipout.c
[View tipout.c] 
tipx
 
uucplock.c
[View uucplock.c] 
value.c
[View value.c] 
vars.c
[View vars.c] 
xfer/
 

README.NeXT

This directory contains sources and NeXT binaries for tipx - tip with
a support for z/y/xmodem transfer.  This program is not perfect, by
any means of imagination, but quite useable anyway.

For a proper operation and handling of .tiprc files tipx should be
installed as a suid program owned by uucp.  Check Makefile for details.
BTW - chown and chmod operations will not work properly if you will
execute this Makefile from id other then root.

This version has specific changes to support ZyXEL modem on fixed
38400 modem computer connection and I have no idea how this may
affect other modems.  Binaries are not compiled with a support
for not Hayes-compatible modems but you may modify that easily.
See comments in hayes.c.  An original file hayes.c is in aculib
subdirectory.  Please check also pathnames.h file.

The next paragraph describes changes which were needed to support
2400 Supra modem and is kept here for your information only.

/* obsolete */
As compiled executables support only hayes compatible modems with
speeds up to 2400 bauds.  (I simply do not have a documentation
which would describe proper return codes for other speeds.  To extend
that table consult your modem documentation, add to ret_message[]
table in hayes.c and modify condition
   connected = ( 1 == dummy || 8 < dummy || 5 == dummy);
in hay_dialer:hayes.c.)  For support for other modems check
aculib subdirectory and pick-up something fitting or roll your own.
/* obsolete */

I have found that quite often when chosing transfer commands after
~X escape tipx is confused about it contents.  Most likely something
hangs in a command buffer.  Sending break with ~# in such moments
saves a day.  Maybe sometime in a future I will look closely what
is going on.  No promisses. :-)

A documentation in a file src/tip.1 is rather spartan and is using
troff macros unknown to me.  It does not seem to differ from
tip man page which is already on your system.  tipx obviously
recognizes more capabilities than described on remote(5) man
page.  I did not try to decipher what they are.  After some
head scratching and a session with a debugger I constructed
the following /etc/remote file which seems to work fine for me.
Your mileage may vary.

#
# /etc/remote for 2400 default dial out modem (Hayes compatible)
#

cufa38400|Dial-out on cua at 38400 baud:\
	:dv=/dev/cufa:br#38400:el=^C^S^Q^U^D:ie=%$:oe=^D:
cufa19200|Dial-out on cua at 19200 baud:\
	:dv=/dev/cufa:br#19200:el=^C^S^Q^U^D:ie=%$:oe=^D:
cua9600|Dial-out on cua at 9600 baud:\
	:dv=/dev/cua:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
cub9600|Dial-out on cub at 9600 baud:\
	:dv=/dev/cub:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
ttya9600|Hardwire on ttya at 9600 baud:\
	:dv=/dev/ttya:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
ttyb9600|Hardwire on ttyb at 9600 baud:\
	:dv=/dev/ttyb:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
#
# General dialer definitions used below
#
dial38400|38400 Baud Hayes attributes:\
	:dv=/dev/cufa:br#38400:at=hayes:du:
dial19200|19200 Baud Hayes attributes:\
	:dv=/dev/cufa:br#19200:at=hayes:du:
dial9600|9600 Baud Hayes attributes:\
	:dv=/dev/cufa:br#9600:at=hayes:du:
dial4800|4800 Baud Hayes attributes:\
	:dv=/dev/cufa:br#4800:at=hayes:du:
dial2400|2400 Baud Hayes attributes:\
	:dv=/dev/cua:br#2400:at=hayes:du:
dial1200|1200 Baud Hayes attributes:\
	:dv=/dev/cua:br#1200:at=hayes:du:
dial300|300 Hayes attributes:\
	:dv=/dev/cua:br#300:at=hayes:du:
#
# UNIX system definitions
#
UNIX-38400|38400 Baud dial-out to another UNIX system:\
	:el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial38400:
UNIX-19200|19200 Baud dial-out to another UNIX system:\
	:el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial19200:
UNIX-9600|9600 Baud dial-out to another UNIX system:\
	:el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial9600:
UNIX-2400|2400 Baud dial-out to another UNIX system:\
	:el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial2400:
UNIX-1200|1200 Baud dial-out to another UNIX system:\
	:el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial1200:
UNIX-300|300 Baud dial-out to another UNIX system:\
	:el=^U^C^R^O^D^S^Q@:ie=#%$:oe=^D:tc=dial300:
#
tip0|tip38400:tc=UNIX-38400:
tip19200:tc=UNIX-19200:
tip9600:tc=UNIX-9600:
tip2400:tc=UNIX-2400:
tip1200:tc=UNIX-1200:
tip300:tc=UNIX-300:
cu0|cu38400:tc=UNIX-38400:
cu19200:tc=UNIX-19200:
cu14400:tc=UNIX-14400:
cu9600:tc=UNIX-9600:
cu2400:tc=UNIX-2400:
cu300:tc=UNIX-300:
cu1200:tc=UNIX-1200:
dialer:dv=/dev/cufa:br#38400:
#
#
# example of systems to dial by phone - you may choose to maintain
# /etc/phones instead.
# 
beach|each:\
  :pn=5555555:tc=dial38400:
zg:\
  :pn=6666666,:tc=dial2400:
# and so on....
#--------------------------------------------------------------------
#The attributes are:
#
#dv	device to use for the tty
#el	EOL marks (default is NULL)
#du	make a call flag (dial up)
#pn	phone numbers (@ =>'s search phones file; possibly taken from
#			      PHONES environment variable)
#at	ACU type (vadic, ventel, hayes, courier)
#ie	input EOF marks	(default is NULL)
#oe	output EOF string (default is NULL)
#cu	call unit (default is dv)
#br	baud rate (defaults to 300)
#fs	frame size (default is BUFSIZ) -- used in buffering writes
#	  on receive operations
#tc	to continue a capability

This is a corresponding line from /etc/ttys

ttydfa	"/usr/etc/getty std.38400"	unknown		on secure

and supporting changes in /etc/gettytab
...
g|std.19200|19200-baud:\
	:sp#19200:
h|std.38400|38400-baud:\
	:sp#38400:
....
D38400|Fast-Dial-38400:\
	:nx=D19200:tc=38400-baud:
D19200|Fast-Dial-19200:\
	:nx=D9600:tc=19200-baud:

   Have fun
   Michal
   ntomczak@vega.math.ualberta.ca
   ntomczak@vm.ucs.ualberta.ca

README.TIPX

tipx is based on the 4.3 tip available from uunet's ftp
communications subdirectory.

Two changes were added, transparent mode (called rawthru in
the code) and X/Y/ZMODEM file transfer.

To make tipx, first get the basic tip distribution working, then
unshar this set on top of a copy of the distribution, type
   sh CONVERT2TIPX
edit the Makefile to your liking, then make.  Leave -DTIPX in the CFLAGS
to keep the tipx changes.  Removing -DTIPX should cause the original tip
to be produced.

Typing make in the xfer subdirectory will make the two transfer programs.
Place tipx, tiprz and tipsz together in reach of your $PATH to
execute.  You may have to set u+s on tipx and chown to daemon,
uucp or some other uid.  I have not run tipx setuid, but the same
security precautions are taken with file transfer as are taken
with other pertinent paths, such as shell escape, etc.

If you do not want -DACULOG, remake in libacu.  (-DACULOG is the
onlything on our system which required setuid).

I make no warranties: caveat emptor, carpe diem and all that stuff.  You
may wish to remove the copyright notice on startup.  It probably does
not need to be there, but I am a nervous wee hacker (old definition!)
and tread lightly in the land of wizards.

/*
 To compile on NeXT all references to slip and page were removed
 since I do not have source to corresponding modules. Entry for NeXT
 added in tip.h
*/


Transparent Pass-through
------------------------

The ~R and ~N commands were added to support transparent mode
(eight-bit transmission between local and remote tty).

~R enables transparent mode, after which all characters are
passed byte-for-byte, bit for bit between the two tty ports.
The sole exception is that if no input is sent by the local
tty for one second, followed by three escape codes (usually
tilde) within a second, followed by a second of silence, then
the tip command mode is entered.  The side effect of this
feature is that the first escape character passed in this
window of two seconds will delay transmission for up to two
seconds.  This has not been too much of a problem here.

File Transfer
-------------

The file transfer mode requires the control tty to have a
valid TERM environment variable since it uses a curses-based
status display.

~X enters the file transfer mode.  Viz:

~X
file transfer command? (? for help) ?
for send help, type ~Xs?; for receive help, type ~Xr?
where ~ represents your escape character

XMODEM (CHK, CRC) and XMODEM-1k/CRC
sx [-ak] filename  -a (ASCII) convert NL to CR/LF (default binary)
                   -k use 1024 blocks instead of 128 (XMODEM-1k)
YMODEM/CRC Batch
sy [-af] filelist  -a (ASCII) convert NL to CR/LF (default binary)
                   -f transfer using full pathanme (default simple)
ZMODEM (CRC-16, CRC-32)
sz [-af+nNyrwo] [-w #] [-L #] [-l #]  filelist
                   -a (ASCII) convert NL to CR/LF (default binary)
 not all ZMODEM    -f transfer using full pathanme (default simple)
 receivers accept  -+ Append to existing destination file
 all overwrite     -n overwrite file if source newer
 or append         -N overwrite file if source newer or longer
 options           -y yes, absolutely overwrite existing file
                   -r Resume/Recover interrupted file transfer
                   -o use CRC-16 instead of CRC-32
                   -w # Window is # bytes (>= 256, multiple of 64)
                   -L # Limit subpacket length to # bytes
                   -l # Limit frame length to # bytes (l must >= L)

~X
file transfer command? (? for help) r?
XMODEM (CHK, CRC) (rcvr tries CRC, then checksum)
                          rx [-ab] filename
YMODEM/CRC Batch          ry [-abu]
ZMODEM (CRC-16, CRC-32)   rz [-abu]
Switches:    -a force ASCII translation on receive
             -b force binary transfer
             -u convert uppercase filenames to lower case

All of the switches are compatible with the rz/sz programs (1.44)
by Chuck Forsberg from which these programs were derived.

The curses-based status display looks something like:

        .-[ tipsz 1.00 ]-- /u3/sd/wht -----------------------------.
        |  ZMODEM/CRC32  Transfer rate ~= 319 ch/sec (33%)         |
        |  File   1 of   1: mail.log                               |
        |  File position:      1275 length:     1275  -rw-------   |
        |  Sending 1275 bytes  total time ~=  0:02                 |
        |  tx: hdr ZFIN  0             rx: hdr ZFIN  0             |
        |  Comm I/O: rx      176  tx     1414 bytes                |
        |  Baud rate:  9600 BINARY blklen:  1024 comm mode: NORMAL |
        |  Time:    started: 18:03:04 this file: 18:03:06 window:  |
        |  18:03:12 elapsed: 00:00:08            00:00:00 +0       |
        |  Errors: this file:   0 total:    0 files skipped:   0   |
        |  Total file bytes transferred: 1275                      |
        |  End of file                                             |
        |  Remote: CRC32 y  duplex y  continuous stream y          |
        `----------------------------------------------------------'

away for 11 seconds
!


Enjoy,
	Warren Tucker <wht%n4hgf@gatech.edu>
	150 West Lake Drive
	Mountain Park, GA  30075
	(404) 587-5766

TODO (from Doug Kingston <dpk@morgan.com> README.SLIP)
	port back to SunOS 3.5/4.2BSD environment (line discipline version)
		(code is there but untested)
	work on header file includes and ioctl usage
		to eliminate the redefine error messages

TODO
	update man pages

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.