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
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.