Article 147626 of comp.os.vms: This is to announce a public Beta testing period for C-Kermit 6.0.192 for UNIX, VMS, AOS/VS, and (sort of) the Macintosh, hopefully to be joined by several other operating systems along the way. The previous general release of C-Kermit was 5A(190) in October 1994. The major new features include: . Serial communications: Dialing - A major overhaul of C-Kermit's dialing capalities (see below) Modems - A major overhaul of C-Kermit's modem support (see below) Speeds: more and higher speeds allowed in many versions (e.g. VMS) . TCP/IP: New ability to accept incoming TCP/IP connections (UNIX and VMS only) New SET TCP controls (buffer sizes, "linger", etc) New SET TELNET controls (binary mode, etc) New command-line option "-J " makes C-Kermit work like Telnet . X.25 support updated for SunLink 8.00 and 9.00. . File transfer: REGET (crash recovery, like RESEND, but for downloading from a server) Autodownload (automatic RECEIVE while in CONNECT mode) (VMS and UNIX) Dynamic packet timeouts Lots of useful stuff added to fullscreen file transfer display ADD SEND-LIST (build up a list of files to send) FAST, CAUTIOUS, ROBUST commands (quick selection of transfer settings) SET FILE DOWNLOAD-DIRECTORY (make all downloads go to same place) SET FILE DESTINATION { DISK, PRINTER, SCREEN } as in MS-DOS Kermit SET PRINTER (file, device, or pipe) Text-file record format selection In UNIX, built-in support for external protocols (ZMODEM, etc) . Client/server: SET SERVER LOGIN (for incoming connections) Redirection of REMOTE commands (to file, printer, or pipe) SET SERVER GET-PATH (search path for GET requests) New REMOTE commands: RENAME, COPY . Script programming: Local (automatic) variables for macros New C-like commaless, dashless syntax for script programs New SWITCH statement like in C SET/IF/SHOW ALARM as in MS-DOS Kermit PAUSE, SLEEP, WAIT, INPUT, SET ALARM also accept hh:mm:ss as in MS Kermit Many new variables and functions, listed below Long variable names now can be used with READ, ASK, etc SET INPUT BUFFER-LENGTH allows you to make the INPUT buffer any size Braces allowed for grouping in function arguments Automatic evaluation of arithmetic expressions in many contexts . General: Ability to become a fully transparent 8-bit link between 2 end systems Improved context-sensitive "?" keyword and file menus "More?" prompting for most menus, HELP, and SHOW text More and better messages Default prompt now shows current directory NOPUSH available at runtime to disable escape to system Many new file management commands, e.g. MKDIR, RMDIR Improved speed & responsiveness on many System V based UNIXes DYNAMIC PACKET TIMEOUTS In previous versions of C-Kermit, packet timeouts were fixed at some constant value, like 10 seconds. This could be changed by the user, but it still remained fixed throughout the file transfer. This had two unfortunate consequences: 1. It the timeout was too short the file transfer would always fail. 2. If it was too long, error recovery was slow. Situation (1) was surprisingly common. For example, if you dialed in with a slow modem (say, 1200 bps) and tried to transfer a file using long packets (say, 2400 bytes), then 2400 / 120 = 20 seconds would be needed for each packet. If C-Kermit *knew* the speed was 1200, it would take this into account, but often it would have no way to know, e.g. if you were going through a terminal server, in which case the system sets some default value for your speed, like 19200 or 38400, and Kermit never knows the real speed. The new method, which is used unless you specify otherwise, calculates timeouts on a per-packet basis, based on the observed round-trip time (the time from when a packet is sent until its acknowledgement is received). This lets Kermit adjust automatically to prevailing conditions -- slow connections, fast connections, bursty connections -- even if they are always changing. Acknowledgments to Tim Kientzle for demonstrating how simply this can be done (but of course there are always a few extra wrinkles in practice :-) INCOMING TCP/IP CONNECTIONS This is just a first step, and is so far available only in the UNIX and VMS versions, and then only in certain of them (the ones with a sockets library AND that have the select() function available). The idea is that you can tell C-Kermit to wait for an incoming TCP/IP connection on a socket of your choice. What you do with it after the connection comes in is up to you. It can be put into server mode; it can run some kind of script (like a "host mode" script); you can even go into CONNECT mode and have a "chat" session. If you put it into server mode, you can also specify a username and password that must be supplied by the client before the server will honor any other requests, and you can also set up all sorts of restrictions on what the client can do. This gives ordinary users the ability to set up relatively secure and private file transfers with anybody else on the Internet, without any special privilege, without the need to create user IDs, without requiring access to directories they do not own, etc. Later on, perhaps even during this Beta period (time permitting), we'll be expanding this to provide a kind of generic "Kermit service" on the Internet, similar to FTP service, the details of which remain to be worked out. DIALING The biggest change in version 6.0 is in areas of modems and dialing. In version 6.0, C-Kermit supports: . Automatic repeated dialing (no scripts required) . Multistage dialing . Credit-card dialing . Dialing pagers . Incoming modem calls (ANSWER command) But the biggest change is in the dialing directory and in C-Kermit's understanding of telephone numbers. The version 5A dialing directory couldn't have been simpler -- a single file that Kermit searched for a name and, if found, replaced it with the associated phone number and dialed it, literally, exactly as found. Version 6.0 supports multiple simultaneous dialing directories, multiple (thousands, even) entries under the same name (so, for example, if the first number is busy, Kermit immediately goes on to the second number, etc), and most of all, a thorough understanding of dialing procedures: country codes, area codes, toll-free calling, calling cards, PBXs, and lots more. This new knowledge about telephone numbers, in turn, allows "cheapest-first" dialing when multiple numbers are fetched from the dialing directory, and it allows dialing directories to be "portable" -- that is, the same entry can be dialed from anywhere -- local, long-distance, international, etc. Old-format directories are converted to new format automatically (if you approve, of course). MODEMS "Render unto dialing the things of dialing, and render unto modems the things of modems..." The concepts of "dialing" and "modems", which had been mushed together in previous C-Kermit versions, are now nicely separated. Dialing related parameters (such as country codes, are codes, repeat dialing, pulse vs tone dialing, etc) are controlled by SET DIAL commands, and modem-related items (like error correction, data compression, speed buffering, flow control, and other modem configuration parameters) are controlled by SET MODEM commands. Every aspect of modem operation can be customized, and new modem types can be added easily. Furthermore, a lot of settings that used to have to be done by hand are now done automatically according to the built-in modem database when you choose a modem type. And modem configurations (e.g. with respect to EC, DC, flow-control, etc) follow the Kermit settings automatically. Modems supported in version 6.0 include: AT&T Dataport AT&T Digital Terminal Data Module AT&T ISN Network AT&T switched-network modems Boca modems CCITT / ITU-T V.25bis (old) Cermetek Info-Mate 212 A (old) Condor CDS 220 2400b (old) DEC DF03-AC (old) DEC DF100-series (old) DEC DF200-series Digitel DT-22 CCITT variant Gateway 2000 Telepath (old) GeneralDataComm 212A/ED Hayes 1200, 2400, and compatible modems Hayes Accura, Optima, and Ultra IBM Mwave Intel Fastalk and Lifestyle MaxTech modems Microcom DeskPorte FAST ES 28.8 Microcom modems in native SX mode Motorola FasTalk II or Lifestyle Multitech modems (old) Penril modems Practical Peripherals modems Racal Vadic VA4492E Rockwell V.32 Rockwell V.32bis Rockwell V.34 Data/Fax Rolm 8000, 9000, 9751 CBX DCM Supra modems Telebit modems, all models USR Courier and Sportster (old) Ven-Tel modems Zoltrix modems Zoom modems ZyXEL modems (If you want support added for additional modems, be prepared to furnish a copy of the manual or command summary by email, fax, or post.) "Telebit Unification" has taken place, and now Telebits are treated like any other modem, divided roughly into two categories, "telebit" (recent models) and "old-telebit" (old models like the TrailBlazer). Any model-specific variations can be handled easily using SET MODEM commands. In general, C-Kermit is now much more attuned to the world of high-speed modems, much easier to use with them, and much easier for users to tune. SCRIPT PROGRAMMING C-Kermit's script programming features have been considerably expanded and simplified. The script programming language is now: . More powerful (it has more features) . More structured (a kind of block structure has been added) . Easier to use (syntax is simplified) . Easier to debug (line numbers are displayed in error messages) . More compatible with MS-DOS Kermit To illustrate, is a script program to print the day of the week in German (or something like it): switch \v(nday) { :0, echo Sonntag, break :1, echo Montag, break :2, echo Dienstag und zunaechst kommt... :3, echo Mittwoch, break :4, echo Donnerstag, break :5, echo Freitag - Gott sei dank, break :6, echo Samstag, break :default, echo Invalid day - \v(nday)! } Note the new SWITCH statement, the block structure (accomplished by braces), and the absence of those confusing ",-" constructions at the end of each line. New Built-In Variables: \v(charset) (local character set) \v(connection) (type of connection - serial, tcp/ip, etc) \v(cps) (speed of most recent file transfer, chars per sec) \v(d$xxx) (various SET DIAL values) \v(dialstatus) (numeric code for DIAL result) \v(dialresult) (literal string returned by modem after dialing) \v(download) (download directory) \v(errno) (value of the "errno" variable) \v(errstring) (error message, if any, associated with errno) \v(evaluate) (result of most recent EVALUATE command) \v(ftype) (current FILE TYPE setting, e.g. "text" or "binary") \v(instatus) (detailed result of the most recent INPUT command) \v(minput) (tells which MINPUT search string was matched) \v(modem) (current modem type) \v(m_xxx) (various SET MODEM COMMAND values) \v(newline) (newline character or sequence appropriate to the OS) \v(packetlen) (current RECEIVE PACKET-LENGTH value) \v(parity) (current PARITY setting) \v(protocol) ("kermit") \v(rows) (number of rows (lines) on your screen, if known) \v(cols) (number of columns on your screen, if known) \v(terminal) (terminal type, if known) \v(tmpdir) (directory for creating temporary files) \v(query) (result of most recent REMOTE QUERY command) \v(sysid) (Kermit protocol system/OS code) \v(window) (current SET WINDOW size) \v(xversion) (product-specific C-Kermit version number, if any) \v(_line) (current line number in current command file) New Built-In Functions: \Fbreak(s,c) (substring of string s up to first occurence of char c) \Fcapitalize(s) (string s capitalized) \Fdate(file) (creation or modification date of file) \Fhexify(s) (hexadecimal representation of string s) \Fipaddr(s,n) (first IP address in s starting at position n) \Fltrim(s1,s2) (trim all chars that are in s2 from left of s1) \Fmodulus(n1,n2) (n1 mod n2) \Freplace(s1,s2,s3) (replaces all occurrences of s2 in s1 with s3) \Frindex(s1,s2,n) (rightmost occurrence of s1 in s2) \Fsize(file) (size, in bytes, of file) \Fspan(s1,s2) (left substring of s1 with only characters from s2) \Ftod2secs(hh:mm:ss) (convert hh:mm:ss to seconds since midnight) \Ftrim(s1,s2) (trim all chars that are in s2 from right of s1) \Funhexify(string) (opposite of \fhexify()) \Fverify(s1,s2,n) (position of the first char in s2 not also in s1) DOCUMENTATION The new features of C-Kermit 6.0.192 (and in fact, all the features that have been added since version 5A(188)) are documented in the ckcker.upd file. Use this file as a supplement to "Using C-Kermit". The new modem and dialing features are documented in their own files, modems.doc and dialing.doc. Hints and tips, FAQs, etc, applying to C-Kermit as a whole can be found in the ckcker.bwr file, and to each particular version of C-Kermit in the ck*ker.bwr files (* = u for UNIX, v for VMS, etc). Installation instructions are in ck*ins.doc (* = u, v, etc). All the other online files (man pages, etc) have also been updated. THE MACINTOSH VERSION Owing to the chronic lack of Macintosh programmers, the Macintosh version is still badly neglected (volunteers are always welcome :-). However: . It has been rebuilt on the C-Kermit 6.0 code base, even though all of the new features might not be fully integrated; and: . It now uses the Communications Tool Box, which should eliminate a lot of bombs, as well as allow the use of certain devices, such as internal modems, that could not be used before. TESTED ON... Apple Macintosh with Mac OS 6.03. DEC Alpha, OpenVMS 6.2 with and without TGV MultiNet. DEC VAXstation 3100 VAX/VMS 5.5-1 with and without UCX. DEC VAX 4000 VMS 5.5-2 + TGV MultiNet. Data General MV 2500/DC AOS/VS II 2.20.00.39 + TCP/IP. AT&T 3B2 with System V R2.1 AT&T UNIX PC 7300 System V R3.51 DEC 5800 with Ultrix 4.3. DEC Alpha with OSF/1 3.0 DEC Alpha with Digital UNIX 3.2 HP 9000, various models, with HP-UX versions from 7.05 to 10.01. HP 9000 with BSD 4.4-Lite. IBM Power Power Series 400 AIX 4.1. IBM RS/6000 with AIX 3.1.5 and 3.2.5. NCR System 3000, System V R4.2. NeXTstation, NeXTSTEP 3.1. PCs with BSDI 1.0-C and 2.1. PCs with Linux, various versions. PCs with QNX 4.22. PCs with SCO UNIX 3.2v4 (= ODT 3.0). PCs with SCO Open Server R5.0. PCs with Unixware 1.1.2, 1.1.4, 2.03, and 2.11. SGI Indigo with IRIX 5.3. Sun SPARC, SunOS 4.1.3_U1. Sun SPARC, Solaris 2.4 and 2.5, SPARC, with gcc and with SunPro CC. Sun SPARC, Solaris 2.4 with SunLink X.25 9.00. and... (would you believe): A DEC MicroVAX-II with Bell Labs Research UNIX 10th edition. Building and testing is still needed on platforms not listed above (as well as on the ones that are listed :-) WHERE TO GET IT Quick access for Web users: http://www.columbia.edu/kermit Follow the "What's New" link (reload if necessary). The new test version is available via anonymous ftp from: kermit.columbia.edu in the kermit/test directory tree: kermit/test/text Contains individual source files, documentation files, makefiles, etc ftp in text mode. The general formula for getting all the files you need for a particular version is: text prompt mget ck[cuw]*.[cwh] ck?*.* (where ? = v for VMS, m for Macintosh, etc) kermit/test/macintosh The macintosh binary as a BinHex 4.0 file, ckmker.hqx, plus accompanying documentation files, such as they are. ftp in text mode. kermit/test/tar The complete UNIX sources, makefile, and documentation files as compressed tar archives: cku192.tar.Z (uncompress) and cku192.tar.gz (gunzip) kermit/test/bin Individual binaries, all of them used to transfer themselves (in binary mode, of course :-) ftp in binary mode: Filename Build procedure Built on ckdker.pr ckdmak.cli DG MV 2500 AOS/VS-II 2.20.73 with TCP/IP ckmker.hqx MPW / ckmker.mak Macintosh IIx Mac OS 6.03 ckuker.bsdi make bsdi Intel PC, BSDI 1.0-C ckuker.dec-osf32 make dec-osf32 DEC Alpha, Digital UNIX 3.2 ckuker.du42c make du42c DECstation MIPS, Ultrix 4.3 ckuker.hpux80c make hpux80c HP 9000/385, HP-UX 8.00 ckuker.hpux90o700 make hpux90o700 HP 9000/7.12, HP-UX 9.05 ckuker.irix51 make irix51 SGI Indigo, IRIX 5.3 ckuker.next.68000 make next NeXTstation, NeXTSTEP 3.1 ckuker.qnx16 make qnx16 PC, QNX 4.22, 16-bit ckuker.qnx32 make qnx32 PC, QNX 4.22, 32-bit ckuker.rs6aix41 make rs6aix41 IBM Power Series 400, AIX 4.1 ckuker.sco32v5net make sco32v5net PC, SCO Open Server R5.0 ckuker.solaris2x make solaris2x SPARC, Solaris 2.4 ckuker.solaris2x25 make solaris2x25 SPARC, Solaris 2.4 + SunLink X.25 9.00 ckuker.sunos41c make sunos41c SPARC, SunOS 4.1.3_U1 ckuker.unixwarenetc make unixwarenetc PC, UnixWare 2.03 ckvaker.exe ckvker.mak DEC Alpha OpenVMS 6.2 (no TCP/IP) ckvatvg.exe ckvker.mak DEC Alpha OpenVMS 6.2 + TGV MultiNet ckvvker.exe ckvker.mak DEC VAX/VMS 5.5-1 (no TCP/IP) ckvvtgv.exe ckvker.mak DEC VAX/VMS 5.5-2H4 + TGV MultiNet ckvvucx.exe ckvker.mak DEC VAX/VMS 5.5-1 + DEC TCP/IP Reports of all kinds -- good, bad -- are most welcome; please send them straight to: kermit@columbia.edu Bad ones tend to come anyway, but if you test this version of Kermit and it's OK, please let us know about that too. Please be specific about your hardware platform, operating system and version, etc. If anybody wants to furnish binaries for this Beta version that are not already present -- e.g. for DG/UX, VMS with other TCP/IP products, etc, please send email to kermit@columbia.edu. Thanks to all the people too numerous to name for their help with system access, code, bug reports, fixes, suggestions, and encouragement -- and especially to Jeff Altman. Watch the comp.protocols.kermit.misc newsgroup for further announcements. Frank da Cruz and Christine M. Gianone Managers, The Kermit Project Columbia University