MS-DOS Kermit Version 2.29 Release Notes, May 26, 1986: New Features: . Full DOS 2.0 file support; device and path may be included in any file specification in any Kermit command. DOS 1.x support fully removed. Version 2.29 will not run under DOS 1.x (neither would 2.28). . On the IBM PC family, emulation of VT52, H19, VT102, and dumb terminal (the latter to allow coresidence with a loadable console driver like [N]ANSI.SYS). Support for host control of 25th line during terminal emulation. Increased screen memory for rollback, dynamically sized to allow for varying memory capacity (about 8K required per screenful). Program needs at least 60K to run, will use as much as 100K if available, plus more when PUSH, SPACE, or other commands that invoke DOS or other programs are used. . VT102 emulation on IBM PC family includes all major VT102 features except 132 columns, smooth scrolling, printer control, and various diagnostic functions. H19/VT52 emulation is more complete than in previous versions. VT102 is equivalent to VT100 with AVO, plus line and character insert and delete functions, and local echo capability, i.e. it is a strict superset of the VT100, and is upwards compatible with ti. . The MS-DOS Kermit server responds to advanced server commands (REMOTE DIR, REMOTE HOST, REMOTE DEL, REMOTE TYPE, REMOTE CWD, etc). But because certain DOS "interactions" can't be fully disabled, these commands can sometimes cause the server to hang (like when DOS asks "Abort, Retry, Ignore?" at the real console). . Improved file name handling, to prevent destruction of directory, system, hidden, read-only, and volume label files. GET and RECEIVE allow device and path to be prefixed to incoming filename. File renaming algorithm much improved for conversion of incoming file names to DOS conventions, and for filename collision avoidance. Only valid DOS filenames are created or used for new files. . On the IBM PC family, compatibility with TopView, DesqView, and MS Windows, and with the IBM Extended and Professional Graphics Adapters. . Screen save (on the DEC Rainbow and IBM family only). F appends current screen to file KERMIT.SCN; use SET DUMP to change screen dump file (or device) name. Differs from LOG in that escape codes are not saved, only the text itself (sans attributes). Use in conjunction with screen rollback to save the last several screens. . New SET TERMINAL command for setting terminal type and parameters, including foreground and background color and intensity on systems that support it (currently only for IBM family). Also, explicit control over whether program should wait for vertical retrace cycle to write screen (snow removal). . New file transfer display options: SET DISPLAY QUIET, REGULAR, SERIAL. . Program segments are now ordered independently of MASM/LINK version, without any special switches required for building, which should clear up all the system crashes that occurred when people ran the program after building it from source without the appropriate switches. . Assembles with MS MASM 1.25, IBM MASM 2.0 aka MS MASM 3.0, and MS MASM 4.0, as well as Intel RMX assembler. . Increased screen rollback memory on DEC Rainbow. . Heath/Zenith-100 port i/o now interrupt driven, therefore much faster. . COMMENT command, for documenting TAKE files. . SET RETRY n command for changing the packet retry threshold. . HANGUP command for dropping DTR & RTS, to signal modem to hang up phone (IBM family only). . LOG command now also logs debugging information (packets, terminal session) if SET DEBUG ON command has been given. . All known bugs in 2.28 fixed including: Severe problems if program assembled and linked improperly GET command filename confusion Failure to warn when run under DOS 1.x Many problems with file renaming, name truncation, etc. Exported filenames with no filetype no longer end with period SET DEST PRINTER didn't work correctly Problems with dynamic memory allocation causing system crashes Problems with dynamic memory allocation requiring more memory than necessary Problems with file transfer display & mode line display on early PC, Compaq Problem with ? display on early PC, Compaq Heath-19 emulation bug regarding receipt of CR or LF at col 80 vs autowrap The "C?" bug in the command parser ^C of a file transfer now honors SET INCOMPLETE KEEP Lost clusters on disk if BYE command given with log file open RUN command did not default file types .EXE, .COM, .BAT Long debug lines would overflow screen Overruns of half duplex systems at high baud rates Control-prefix operands in packets not range checked Interrupt and performance problems on IBM PC family Numbers sometimes disappearing from file transfer display Problems parsing SET PORT options in generic MS-DOS Kermit Program crashes with "divide overflow" when transferring very long file Tendency to hangup Hayes 1200B internal modem upon startup Problems when padding with more than 2 or 3 characters Known limititations of version 2.29: . On the IBM family, SET MODE OFF, SET MODE ON sequences can produce permanent, normal-video mode line. . On the IBM family, SET DEBUG ON not only selects packet display during file transfer, but also control-character/escape-sequence display during terminal emulation. There are no separate controls for these functions. . On systems that use "grey keys" or F-keys for functions like BREAK, modeline toggle, screen scroll, or emulator reset, there is no way to move these functions to other keys. Therefore, if "traditional" (e.g. keypad) values are to be assigned to these keys using SET KEY, their built-in Kermit functions are lost. . Certain keys on the IBM PC keyboard produce no scan code detectable by Kermit, e.g. keypad 5, control-5, etc., and therefore cannot be redefined with SET KEY SCAN. Additional keys on the new "enhanced" keyboard (such as F11 and F12) behave similarly. . On some systems, the message "Undefined baud rate" may appear when program is started. This just means you should issue a SET SPEED command. . Semicolons can not be used in filenames in GET commands from TAKE files, because within TAKE files, semicolons are treated as the start of a comment. . Caution should be used when invoking certain terminate-and-stay-resident programs while PUSHed from Kermit (e.g. using the PRINT command for the first time), as not all of these programs observe proper etiquette for allocating and freeing memory. . Each command macro definition is limited to 132 characters in length. Longer macros can be formed by chaining (end one definition with a DO for the next). . On early (original motherboard & BIOS) PCs, and on systems that mimic them (e.g. Compaq), the cursor may assume a strange shape upon return from CONNECT. This is caused by a bug in the early BIOS, which stored cursor attributes incorrectly. . MS-DOS Kermit cannot read commands from a .BAT file. It only reads them from the keyboard. It may be run in the batch, but only using command line arguments (possibly invoking TAKE files). Incompatibilities with previous releases: . SET HEATH gone, replaced by SET TERMINAL { HEATH, VT102, etc } . SET AUTOWRAP gone, replaced by SET TERMINAL WRAP . SET REMOTE ON/OFF changed to SET DISPLAY OFF/ON (but SET REMOTE still there) . Filename completion (recognition) no longer works, because of support for fully qualified DOS 2.0 pathnames. Tested successfully on the following systems: . IBM PC, XT, AT, PCjr, Portable PC, Convertible PC, and RT with AT DOS option . Compaq, Z150, Z160, and other IBM compatibles . DEC Rainbow . Heath/Zenith-100 . HP-150, HP-110, and Portable Plus . NEC APC and APC-3 . Victor 9000 / Sirius 1 . ACT Apricot . Sanyo MBC 550 . Texas Instruments Professional PC . Generic MS-DOS . Intel 300 series with iRMX-86 Needs testing on: . Wang PC . Olivetti M24 PC . Grid Compass II . DECmate-II,III with XPU (MS-DOS) option IBM PC family H19 and VT102 emulators tested successfully with: . EMACS (DEC-20, CCA, GNU, and others, using line/char insert/delete) . EDT, PHONE (VAX/VMS) (what else on VMS? TPU?) . 1-800-DEC-DEMO . UNIX vi, sysline, etc . Various torture tests What's not in 2.29 (wish list for future releases): . TRANSMIT command for raw file upload . Login scripts . DIAL command, telephone directory . Transaction file logging. . A way to accept default values for omitted trailing fields in commands. . A better built-in help facility. . VT102 ANSI printer control . Long packets, sliding windows, or attribute packets . Tektronix or other graphics terminal emulation (except in TI Pro & Victor) . Redefinable keys at Kermit-MS> prompt level . Control over display of 8-bit characters during CONNECT . Pause at end of screen during local TYPE . A simple way to make Alt = Meta, without many many SET KEY commands . Piped operation a la UNIX (e.g. compress foo.bar | kermit send) . Integration with C-Kermit protocol modules Request contribution of TopView .PIF file, Desqview and Windows configuration files, verification that 2.29 works on the as-yet untested systems, along with .BOO files, installation instructions, etc., for those systems. Notes on MS Kermit 2.29B 19 Feb 1987 This most recent version of MS Kermit 2.29 has support for VT102 printer commands, Long packets, and Scripts. Additionally, it has corrections to most problems known at this time. A new kind of MS Kermit, MSTCLO.BOO, is available for near clones of IBM PC's but whose serial port hardware is not similar. Here is a description from the originator, Glenn Everhart of RCA Labs: This module is derived from MSXIBM.ASM and is intended for IBM PC near-clones that differ in their serial I/O but emulate the IBM BIOS. Such machines include Seequa Chameleon, DG/1, and others. The idea is to use the VT100 emulation (which will work) but use BIOS for all serial I/O. This is not interrupt driven and so will (unfortunately) not be able to keep up well at high baud rates. Nevertheless, it will be far better than the old Seequa version which didn't emulate anything. This version will also work on IBM PCs that need to use something other than the internal asynchronous adapter for communications, like a Token Ring asynchronous communication server via NETBIOS. BUG FIXES AND INTERNAL IMPROVEMENTS: Two important problems with MS Kermit 2.29 (no letter) were an incompatibility with Hayes internal modems, and related modems: the modem would hangup the phone when a file transfer completed or Connect mode were exited, and secondly, null characters could be sent at the start of a file transfer or when Connect mode was entered. It seems that several mainframes regard null characters as important signals rather than as fillers. We have tested this version with a real Hayes 1200B modem with satisfactory results. There were numerous small problems throughout MS Kermit, as might be expected, and those identified to date have been addressed. One important one was the serial port was left active if one PUSHed to DOS while in Connect mode. Serious DOS errors are trapped by Kermit to prevent Kermit from being aborted with the serial port interrupt alive and with a couple of other items redirected to Kermit itself. The most common such error is "Drive Not Ready." Previously, these conditions would invoke the normal DOS Critical Error proc which would request "Abort, Retry, Ignore?" and would abort the program if Abort were chosen. Now, Kermit exercises a fourth option, Fail the Operation, when these errors occur. Procedures spawning a second copy of COMMAND.COM (DIR, etc) still can yield the A/R/I message but it is harmless in this case. However, if such a message arises while Kermit is in Server mode a human must still type the answer locally. The implementation replaces the normal DOS Control-Break (^C) and Critical Error handlers with Kermit's own handlers and restores the originals when Kermit exits. Numerous small bugs concerning negotiated parameters (8 bit quoting, Block check types, etc) have been fixed; these mainly concerned Server mode operations. The terminal emulator no longer responds to the answer-back msg request; there is no answer-back message in the emulator. Screen handling has been improved internally, but it still has a few glitches. While in Connect mode 8 bit received data will be passed through to the terminal processor if the Parity type is None. If Debugging is ON then characters with their high bit set will be displayed as a tilde and then a code for the lower 7 bits; i.e., 10000001b is displayed as ~^A. Note: due to network quirks these characters may be mistranslated; the tilde is the funny wiggle character above the accent mark and the control symbol is a caret. ADDITION TO SET DISPLAY COMMAND: Set Display Regular | Serial | Quiet | 7-bit | 8-bit The keywords 7-bit and 8-bit have been added to control displays of characters in non-file transfer modes. 7-bit is the default and 8-bit becomes meaningless when parity is other than None. The Set Display command accepts two keywords in one command, processed left to right. ADDITION TO SET PROMPT COMMAND: Special characters, such as escape, can be included in text of Kermit's prompt by specifying them as octal numbers in the form \ooo where o is an octal digit. Escape itself is \33. To return to Kermit's default prompt give the Set Prompt command without text. The replacement prompt can be up to 80 characters long. ANSI PRINTER SUPPORT: For VT102 emulator in IBM and NEC AP3 versions. New escape sequences: ESC [ i Print the entire screen (24 user lines) or just the text in the scrolling region, depending on ESC [ ? 19 h/l below. ESC [ 0 i is an equivalent command. ESC [ ? 1 i Print the line containing the cursor. ESC [ 4 i Disable Controller print. Cursor returns to its position when ESC [ 5 i was encountered earlier. ESC [ ? 4 i Disable Auto Print. ESC [ 5 i Enable Controller print; incoming text is sent to printer but not to the screen. Escape sequences are recognized and acted upon but are not printed. Cursor movement cannot be prevented. ESC [ ? 5 i Enable Auto Print; incoming text is sent to both screen and printer. Escape sequences are recognized and acted upon but are not printed. ESC [ ? 18 h Set Print termination char; requests Form Feed be printed after each Print Screen operation (ESC [ i). ESC [ ? 18 l Reset Print termination char; no FF after Print screen. ESC [ ? 19 h Sets print area of ESC [ i to be the whole screen (24 lines). ESC [ ? 19 l Resets print area of ESC [ i to be just scrolling region. ESC [ ? 15 n Request from remote host for printer status report. ESC [ ? 10 n Response to ESC [ ? 15 n if printer is ready. ESC [ ? 13 n Response to ESC [ ? 15 n if printer is not ready. The print device is selected to be the system printer (system file handle 4, LPT1) and the user has no choice in the matter. If the printer is not ready then a message to this effect is shown on the mode line (line 25) and the print request is skipped. Skipping is done to prevent systems from being hung just because the printer was not plugged in or similar trivia. Trailing spaces on each line are trimmed off to save printing time. These print screen operations should be compatible with all the other screen to printer operations (screen dump key, Log to PRN, DOS print screen, etc). Startup conditions are to reset both Print termination char and screen area bits; i.e., no FF after a print screen command and use scrolling region. LONG PACKETS: This version can use packets up to 1000 bytes in length. The file sender selects the type of packet (Regular or Long) based upon the size of the data to be sent in that particular packet; negotiations at the start of a file transfer determine the maximum length. The receiver is prepared to accept Long packets at any time up to a maximum length set by the user. The command SET RECEIVE PACKET-LENGTH xxx limits the maximum packet size; xxx can be as large as 1000. Kermit uses 94 byte packets as its default maximum size; longer packets will be employed only if the user gives the SET RECEIVE PACK commands above, and the other Kermit knows how to and agrees to send them. Packet lengths greater than 94 are accomplished using a protocol extension -- Extended Length Packets -- that may be lacking in other Kermit programs. The SET SEND PACKET xxx command may be used to override the other Kermit's request. WARNING: The normal file transfer display will be fractured if you use long packets together with SET DEBUG ON. If you want to display long packets during file transfer, be sure to SET DISPLAY SERIAL. PERFORMANCE: The IBM serial port interrupt routine, buffer handler for received chars, and the packet assembly/disassembly routines Spack and Rpack have been completely rewritten for efficiency, Long packets, and high speed operations. It is possible to operate at 38400 baud on a plain 4.77 MHz IBM PC provided that the clock tic routine is not loaded with time consuming extras (Helpful Utilities, print spoolers, screen savers, and the like). Long packet and high efficiency code are system independent; fancy high speed operation code is for IBM PC's and clones and the DEC Rainbow. SCRIPTS: A simple Kermit-style script and raw file upload facility has been written by Jim Sturdevant and myself (he did the original version and we developed it from there). This code is actually system independent. A quick discussion is reproduced below, and the Kermit Help menu has further cryptic guidance. Here is a quick guide to scripts in MS Kermit 2.29. There are several main script commands shown below in Upper case and yet another batch of Set commands to establish operational parameter for scripts. OUTPUT text Sends the single line of text out the serial port. Spaces and tabs are included. Control characters such as a carriage return must be stated as an octal number preceeded by a backslash: carriage return is \15, line feed is \12, bell is \7, and so forth. Example, dial the phone via a modem: Output atdt 5,1234, (918) 555-1212\15 The "text" also can be the first line of a file or even from the console if the first letter of the text is an at-sign, @filename or @con. Thus, Output @con reads a line from the console and sends it out the serial port. You can also include "\b" or "\B" in your script to have it send a BREAK. INPUT [time] text This is a heavily used operation which reads characters from the serial port and attempts to match them to the line of text, or times out if it can't. A common command of this kind would be Input 30 Username: The sequence above waits up to 30 seconds for the pattern Username: to appear. If it does then the next script command is executed. If it does not appear then the script file can be told to Quit or to Proceed as if the pattern did occur. The time field is optional and is nominally 1 second. Selection of Quit or Proceed and the default waiting time are governed by the Set Input command discussed below. Text may also be replaced by at-sign filename to cause the pattern to be selected as the first line in that file. If the text pattern is omitted then the Input command reads characters from the serial port, displays and then discards them. A recent addition allows a carriage return typed at the local keyboard to force a pattern match (for those of us with limited patience concerning recalcerant remote hosts). PAUSE [time] Waits 1 second, or the number of seconds in the optional argument. ECHO text Simply writes the line of text on the screen. Text may contain imbedded escape codes (e.g. VT100 sequences for Rainbow firmware or [N]ANSI.SYS.). CLRINP Empties the serial port's buffer of stored but not yet read characters. TRANSMIT filespec [prompt] Raw file upload. Sends the named file (no wild cards) a line at a time to the remote host. Each line is expected to end with carriage return-line feed, and the trailing line feed is not sent. After each line Kermit waits for a prompt character from the other side. The default prompt char is a line feed. The command line allows the prompt to be changed to any other character (control codes are expressed as an octal number in the form \ooo); specifying a prompt of \0 means do not wait for a prompt. Alternatively, pushing the local Return key simulates reception of prompt. Trans foo.bar \7 send file "foo.bar", expect ^G as a prompt. SET INPUT commands: Set Input Default-timeout seconds Changes the waiting time from 1 second to this new value. Set Input Timeout-action Proceed or Quit Determines whether or not the current script file is to be continued or exited if a timeout occurs. Proceed is the default and means that timeouts are ignored. Quit causes the current script file to be exited and control passed to either the next higher level script file (if the present one were invoked by such) or to Kermit's main prompt. Set Input Case Ignore or Observe Says whether or not to distinguish upper and lower case text when doing a matchup in the INPUT command. Ignore causes upper and lower case letters to be considered the same. Default is to Ignore case distinctions. Set Input Echo On or Off Show on the screen characters read from the serial port during the script operation, or not. Default is On, show them. Values of Set Input things are shown on Kermit's Status display. Construction of a script file. Kermit has the ability to read a file, called a Take file in Kermit-ese, and execute the contents as Kermit commands. The Kermit command to do this is TAKE filename. Within such a file may be another Take command, and within it yet another Take and so on. Thus, the script is prepared as an ordinary text file and is invoked within Kermit by saying Take filename; a complete working example is given below. Before getting to it, however, a word or two about timeouts. If the action on timing out is set to Quit then the current Take file is exited whenever a timeout occurs and processing continues at any next higher level Take file; there is no conditional branching in this script facility. Also, Kermit looks for a particular file, MSKERMIT.INI, at startup time and executes it as the first Take file; you may place normal startup and script commands there as a convenience. An example script is shown below for connecting to machine VAXB via a modem and a Data Switch. The lines starting with Comment are ignored by Kermit and are there as a tutorial guide. Comments may also be placed on a line beginning with a semicolon. Upper case is used for clarity. File LOGIN.SCP - Comment set Kermit's baud rate to 2400 SET SPEED 2400 Comment flush any old junk CLRINP Comment don't display Take file commands as we go SET TAKE OFF Comment quit script if proper answers do not appear SET INPUT TIMEOUT-ACTION QUIT Comment see if modem is alive, hello modem. OUTPUT AT\15 Comment look for its normal response INPUT OK Comment dial the Micom switch (from on-campus) OUTPUT ATDT 3458\15 Comment look for phone being answered INPUT 25 CONNECT Comment wait 1 sec for modem to get ready PAUSE 1 Comment then send control code carriage return, Comment expressed as an octal number preceded by \. OUTPUT \15 Comment wait a sec for the switch to wake up PAUSE 1 Comment one more time so the switch recognizes our baud rate OUTPUT \15 Comment find first part of switch's announcement INPUT 10 slowly Comment ignore timeouts from here on SET INPUT TIMEOUT PROCEED Comment find last word of the announcement INPUT 15 CLASS Comment tell the switch where we want to attach OUTPUT VAXB\15 Comment look for final prompt of Go and a beep INPUT 20 Go\7 Comment let switch get ready for our response PAUSE 1 Comment wakeup vaxb, c/r's, slowly as instructed OUTPUT \15 PAUSE 1 OUTPUT \15 PAUSE 1 Comment third c/r, just in case. Awaken Vaxen OUTPUT \15 Comment look for login sequence INPUT Username: Comment give our username OUTPUT ItsMeAgain\15 INPUT Password: Comment give ourselves a prompt and read from console ECHO \15\12Enter password: OUTPUT @con Comment we're in, go test for new mail msg TAKE mail.scp Comment go into VT102 terminal emulation mode CONNECT And here is file MAIL.SCP, with added comments - Comment show serial port traffic as we go SET TAKE ON Comment Exit this file if timeout (no new mail) SET INPUT TIMEOUT QUIT Comment look for keyword Mail, timeout if none INPUT 10 Mail Comment must be mail if we are still here, read it OUTPUT mail\15 LIMITATIONS OF SCRIPTS: No variables, conditional branching, or similar features. The terminal emulator is not active during script execution, so that escape sequences (particularly the DEC "what kind of terminal are you?" sequence) will not be recognized. A login script designed for VAX/VMS systems with TERMINAL/INQUIRE should do an explicit INPUT for the enquiry string ("ESC Z", or "ESC [ 0 c") and then explicitly output the terminal ID string (like "ESC [ ? 6 c" for the VT102. The terminal emulator is independent of the script facility so that scripts can be a part of all MS-DOS Kermits, not just the IBM PC version. Sometimes 8-bit characters are displayed on the screen during script execution, even though PARITY might be SET to other than NONE. [End of MST22B.UPD] Date: 7 JUN 87 21:22-MST From: JRD@USU Subject: 7 MSTxxx.BOO files, following. In your queue are files dated 7 June 1987, MSK 2.29C: mstibm.boo IBM, tested msthp1.boo HP 110 and Portable Plus, untested msthpx.boo HP 150 untested mstgen.boo Generic, tested mstgri.boo Grid Compass, untested (need a tester too) mstz10.boo Zenith 100/200 (the S100 bus kinds) untested mstap3.boo NEC APC III, untested (has the VT102 emulator) To be finished here are the Victor 9000, Decmate II regular version, and not least the regular version for the Rainbow (partly done now). Apricot is out to the UK (Dick Carlton, rwtc%open.acs.vax@ac.uk), Sanyo 55x is out to Bob Babcock peprbv@cfaamp.bitnet and Joe White jhw@rti.bitnet,. Rainbow/Knoell needs rebuilding here to receive the latest improvements and will be sent later. Wang is out to Chris Lent, currently pedham@cuccfa.bitnet. A variant named EZP is being purged as a curiosity IBM clone of passed interest. The "Clone" Kermit not longer exists since regular MS Kermit/IBM now does the fancy footwork to use the Bios for serial port i/o if a real 8250 UART chip is not available. When the port is selected by Set Port ### a message about Bios usage is displayed, if appropriate. Testing for that chip is read-only for minimum disturbance to the host system. Should someone Set Port COMx when no such port exists then a message is displayed and the current port remains in force. Other small items, en passant. The IBM version measures the cpu speed automatically each time the serial port is opened, to provide reasonably accurate durations for waiting and Breaks (regular 275 ms and long 1800 ms) regardless of machine operational settings. Sort of a KI, Kermit Index. The IBM version also adapts automatically to systems using EGA boards in high density text modes, such as 132 columns and 43 lines, provided the user sets these modes outside of Kermit. Filtering of null and DEL characters has been revised so that the VT102 emulator can send all 256 binary byte combinations to a printer when Transparent Print is activated. The Set Translate Input table is bypassed during Transparent Print. The VT102 emulator is/will be in IBM, NEC APC III, Victor 9000, Wang, and perhaps in the Sanyo version with the IBM compatible video board. The keyboard translator and Set Translate Input table are in all versions. Regards, Joe D. ================================== File error.not MS Kermit returns ERRORLEVEL information for batch files. Version 2.30 of MS Kermit returns an error code to DOS for use in batch files as the ERRORLEVEL parameter. The codes are as follows: 0 success 1 error sending a file 2 error receiving a file 4 error executing a REMOTE command to a server The errors are culmulative while Kermit operates; thus errorlevel of 3 indicates failure to both send and receive a file (or files) in this session. A successful operation does not change or reduce the errorlevel. jrd 7 June 1987 ============================= File multicom.not Notes on operating MS Kermit/IBM with serial ports COM3 and COM4 Joe R. Doupnik 17 May 1987 Kermit is now able to use some of the serial port expansion boards as COM3 and COM4. However, certain technical issues should be probed before attempting such operation. Kermit looks for the base address of the 8250 UART chip for each port by examining the four words in memory starting at location 40:00h (segment 40h, offset 0). The system boot procedure normally tests for standard COM1 and COM2 serial ports and puts their base address in the first two words, or zeros otherwise. You must insert the addresses for additional serial ports, as described below, in words three or four. Kermit assumes that COM3 shares the interrupt request line IRQ4 with the regular COM1 port and similiarly COM4 shares IRQ3. If these conditions are not met then Kermit cannot use the extra ports without changing the source code. Table of serial port numbers Serial Port Base address IRQ Conventions COM1 3F8H 4 IBM standard COM2 2F8H 3 IBM standard COM3 ? 4 your board, Kermit wants IRQ4 COM4 ? 3 your board, Kermit wants IRQ3 The addresses shown as query marks are to be found in the board's reference manual; values such as 2E8H and 2E0H would be common. However, there is no standard for anything to do with COM3 and COM4. Assuming that you have selected an address in harmony with the rest of the system (good luck on that part), set the board's switches or jumpers, and use DEBUG to insert the address(es) in segment 40H memory. The example below creates a small program named setcom3.com to put address 02E8H into the memory word 40:04H for COM3 and writes the program to drive C. (disregard the xxxx items below): DEBUG don't type these comments -n c:setcom3.com sets name of output file -a assemble command xxxx:100 mov ax,40 value 40h xxxx:103 mov es,ax put it into register es xxxx:105 mov ah,02 the 02 part of 02E8H xxxx:107 mov al,e8 the E8 part of same xxxx:109 es: xxxx:10A mov [4],ax store in 40:4 for com3 (40:6 for com4) xxxx:10D int 20 return to DOS xxxx:10F blank line to end assemble mode -r bx show contents of register bx BX 0000 : 0 want register bx to hold 0 -r cx show contents of register cx CX 0000 : 0f set register cx to write 0fh bytes -w write material to the file -q quit debug DEBUG c:setcom3.com -u unassemble to see if all is well -q quit debug Note, for COM4, use [6] above rather than [4], and of course employ your board's port address in place of 02E8H. Check the manual. Finally, try it: C> setcom3 run the program C> DEBUG now see what's down there -dw 40:00 display words in seg 40H shows many words. See yours? Good. -q C> A small side effect noted in practice is the first time the extra port is used there may be garbage from it. Just return to the Kermit prompt and try again, all should be well the second time. More technical comments, for those with an interest. When Kermit finishes with a port it disables interrupts for that serial port and the interrupt request line (protects against stray interrupts later on). However, only one device at a time can be active on an IRQ. If you find that transmissions are good but there is no reception then another device has stolen the IRQ; disable it or find a guru. Kermit will work with non- standard addresses for COM1 and COM2 but the IRQ's must be as in the table above. Accessing a non-existant port produces a message and all commuications are discarded safely. =================================== File network.not Notes on running MS Kermit 2.30/IBM across Local Area Networks 25 April 1987 1. Introduction. The latest version of MS Kermit for IBM PC class machines is able to use many kinds of Local Area Networks (LANs) as its communications channel. The LANs are those based upon or emulate the IBM PCnet Netbios; these include the IBM PCnet, IBM Token Ring, AT&T StarLan, and others. To use a LAN the appropriate LAN board and software must be operating on the personal computer. This software is usually the 'client' side of a file/disk serving system. Next, run Kermit and give the command SET PORT NET nodename for a Kermit client This directs Kermit to communicate via the network components rather than the machine's serial port. Client machines need to state the node name of the remote system. That remote system is likely to be not the LAN file server but rather another user machine operating Kermit in server mode. Thankfully, Kermit does not understand the arcane language of file servers. If the local Kermit is restoring a previous connection or if it is to become a Kermit server then the node name can be omitted: SET PORT NET for a Kermit server After a pause of up to 20 seconds or so Kermit will respond with it's local node name or an error message saying the network is unavailable. No actual connection is made at this point; the network is just checking on uniqueness of our local node name (it does nothing with the remote node name until later). Thereafter, use normal Kermit commands as one would do with serial port communications. Really? Yes, indeed; everything is normal. Great! A connection is established with the first external communications request, such as a file transfer or entering terminal emulation Connect mode. If the connection cannot be completed then an error message indicates this situation; either the network is not functioning on your machine, the remote node is not available, the remote node name is incorrect, or even your kind of LAN is not supported by Kermit. A connection, or 'session' in network terminology, is Broken when - a Kermit is exited completely, - the HANGUP command is issued (yes, the same command as we use to hangup the phone with an attached modem), - a new SET PORT NET differentnode command is issued (but the session is Not broken by saying SET PORT COM1/2), or - one side or the other fails to respond to a packet after a network timeout interval (many seconds). A connection is maintained while switching to one of the regular serial ports (COM1 et al), while Pushed to DOS, and while we just stare at the screen for a while. Kermit remembers the name of the other end, so when returning to a network port from say COM1 just give the command SET PORT NET and resume where you left off. 2. Ways of using Kermit across a LAN. Kermit is likely to be used in two situations. First, as a high quality terminal to a remote host which permits logins via the network. The AT&T StarLan system connected to a Unix machine supports such remote terminals. Similarly, some remote applications are built to talk over the network directly to a terminal. Second, Kermit can be put into Server mode for access by other Kermits across the network. To make a Kermit into a server give the Kermit command Server, but naturally say SET PORT NET beforehand. The node name of a net Kermit is the name of the local node (the first entry in the table of names held in the network adapter board) with the appendage of .K (dot K), such as SALES.K. On a client Kermit give the command SET PORT NET SALES.K and then use regular Kermit file transfer commands. The server will attend to only one user at a time so Hangup the connection when you are done. The server will continue to respond to connections from other nodes until it is shut down or someone issues the LOGO/BYE commands. The network can support many Kermit servers since the name of each is formed from the machine's normal node name plus the extension of dot K. Two Kermits can converse in Connect mode if, but only if, one end is first put into Server mode and then the other end establishes a session. The two Kermit commands, REMOTE SEND one-line-message-to-server's-screen and LOGO are useful to synchronize the connection process before both Kermits are put into Connect mode (a Chat mode if you like). File transfers can be slower than expected because of the extra overhead of wrapping Kermit packets within network packets. A dramatic improvment in speed can be achieved by lengthing the Kermit packets to the full 1000 byte limit; on each end issue the Kermit commands SET SEND PACKET 1000 SET RECEIVE PACKET 1000 Do this on both ends to use long packets. This size is much longer than most network packets, but Kermit takes care to not over fill them. Control-S/Q (XON/XOFF) continue to work on an end to end basis. Some run-on is likely since there probably are one or two packets still in the communciations system. 3. Technical details. The LAN support in MS Kermit/IBM is written to interface with the IBM Netbios, Interrupt 5CH, and, if present, session level Interrupt 2AH. A test is made for presence of the 5CH interrupt and network board before issuing network commands. Keyboard, screen, disk, and other peripheral control is done locally on the PC. Thus, the identical Kermit program will run on a network or through the serial port (with or without an Intel 8250 UART chip) automatically. Network calls are kept as Netbios generic as possible. The Kermit status command shows the communications port as NET (port: N on the terminal status line). No node name is shown because they are 16 or more bytes long and screen real estate is fully used now. Internally, the network packet size is set to 256 bytes for both transmitter and receiver. This is a compromise between efficiency of longer network packets and space consumed within Kermit. Both transmission and reception are additionally buffered within Kermit. Reception is interrupt driven by the network software, transmission is not. Throughput should exceed 10-12K baud on an idle network with 1000 byte Kermit packets. Use the Kermit command SHOW STATISTICS to see average values. Virtual circuits, sessions, are employed rather than datagrams to ensure integrity of terminal mode communications and to reduce the number of lost packets when a network is heavily loaded with other traffic. Virtual circuits also isolate client to server communications to a pair of machines without mingling packets from other sources. The network can support many different Kermit client to server conversations simultaneously. Server mode starts by issuing a network LISTEN packet to solicit a connection from anyone using the server's node name. Thus, a session begins when another system sends a CALL packet to that node name AFTER the server has started. The session ends willingly as described in section 1 and when a packet times out. Afterward, the server posts a new LISTEN packet to solicit a new a session. Breakage is nearly transparent on the client machine because Kermit remembers the last used remote node name. Client type Connect and file transfer modes begin by issuing a network CALL packet to the named node. Control does not resume until the CALL is answered by a Listener or the packet times out; Kermit retries the CALL many times, quietly. Typing Control-C will interrupt the CALL. A SET PORT NET command on a client remembers the last used node name. A server Listens for any remote node name and remembers the last used if such is needed when not in server mode any longer. Thus, SET PORT NET with no node name leaves intact any earlier name. The HANGUP command sends a disconnect message (a network Hangup packet) to the other side but leaves the remote node name intact. Exiting Kermit back to DOS results in a Hangup being executed; just Pushing to DOS retains the connection. Sending a BREAK is always delicate on LANs since the Netbios has no provision for such an RS 232-C signal. Manufacturers of some LANs have provided their own special methods for simulating a BREAK. More work is needed to support various systems. Specialized code will be introduced to support specific LANs. One such case will be allowance of long node names as are used to StarLan ISN gateways. Keyword NET will shift to allow the network name itself. MS Kermit/IBM has been successfully tested on the AT&T StarLan network while running on a PC's Limited 8 MHz AT clone which was loaded with an ega board, dual IOmega Bernoulli Boxes, real hard disk, etc. and on a Zenith 151 regular dual floppy PC clone. The network consisted of these two machines plus an AT&T Unix PC running AT&T Unix System V rel 3.0. The AT and PC clones operated under PC DOS 3.30. 4. Acknowlegments. The network development effort was made possible by the support of AT&T, StarLan Product Management and Paul G. Fox in particular; their contribution to Kermit is recognized. General support of Utah State University is also recognized (you ought to see the computer bills for Mail). Joe R. Doupnik, jrd@usu.Bitnet Center for Atmospheric Sciences and Department of Electrical Engineering Utah State University Logan, Utah 84322-4405 (801) 750-2982 (work) =============================== File key.not Some quick notes on material going into MS Kermit 2.30 Joe Doupnik 21 March 1987 Keyboard translator: Brief list of present Set/Show Key syntax and predefined keys. This is all subject to change at any time (internal development only). Copied straight from the source code. ;Defining a key: ; Command is SET KEY ; ; is ; a single ordinary ascii char or ; the numerical equivalent of an ascii char or ; a Scan Code written as a number or ; keyword SCAN followed by a number. ; ? Displays help message. ; Numbers and Binary codes are of the form ; \123 a decimal number ; \o456 an octal number base letters o, d, x can be ; \d213 a decimal number upper or lower case ; \x0d a hex number ; \{b###} braces around above material following slash. ; ; is one or more spaces and or tabs. ; ; is ; missing altogether which "undefines" a key. ; \Kverb for a Kermit action verb; upper or lower case K is ok ; \{Kverb} ditto. Verb is the name of an action verb. ; text a string with allowed embedded whitespace and embedded ; binary chars as above. This kind of string may not ; commence with sequences \K or \{K; use braces below. ; {text} string confined to material within but excluding ; the braces. Note, where the number of opening braces ; exceeds the number of closing braces the end of line ; terminates the string: {ab{}{{c}d ==> ab{}{{c}d ; but {ab}{{c}d ==> ab. ; ? Displays help message and lists all action verbs. ; ; If Set Key is given interactively, as opposed to within a Take ; file, the system will prompt for inputs if none is on the command ; line. The response to Push key to be defined cannot be edited. ; ; Text which reduces to a single replacement character is put into a ; table separate from the multi-character strings (maxstng of these). ; A key may be translated into any single 8 bit code. ; ; Comments can follow a Kermit action verb or a braced string; no ; semicolon is required since all are stripped out by the Take file ; reader before the defining text is seen by SET KEY. ; ; The current Kermit escape character cannot be translated without ; subtrafuge. ; ; Examples: ; Set Key q z ; makes key q send character z ; Set Key \7 \27[0m ; makes key Control G send the four byte ; string ESC [ 0 m ; Set Key q ; undefines key q so it sends itself (q) again. ; Set Key \2349 \kexit ; defines IBM Alt-X to invoke the leave connect ; mode verb "exit" (Kermit's escape-char ^] C). ; Set Key \x0c Login \{x0d}myname\{x0d}mypass\x0d ; defines Control L to send the string ; Login mynamemypass ; ; Alternative Set Key syntax for backward compatibility with previous versions ; The same forms as above except the key identification number must ; be decimal and must Not have a leading backslash. Example: ; Set Key Scan 59 This is the F1 key ; ; If the definition is omitted it may be placed on the following line; ; if that line is also empty the key is undefined (defined as Self). ; A warning message about obsolete syntax will be given followed by ; the key's modern numerical value and new definition. Only "special" ; keys (those not producing ascii codes) are compatible with this ; translator. ; ;Showing a key: ; Command is SHOW KEY ; System prompts user to press a key and shows the definition plus the ; free space for strings. ----------------------------------------------------------------------------- ; Kermit IBM initialization time keyboard setup. ; internal coding: Kermit verb then key numerical ident (scan=256, shift=512) '\kgold',scan+59 ; F1 '\kpf2',scan+60 ; F2 '\kpf3',scan+61 ; F3 '\kpf4',scan+62 ; F4 '\kkp0',scan+shift+90 ; VT100 keypad numeric area, SF7 '\kkp1',scan+shift+86 ; SF3 '\kkp2',scan+shift+87 ; SF4 '\kkp3',scan+shift+88 ; SF5 '\kkp4',scan+shift+89 ; SF9 '\kkp5',scan+68 ; F10 '\kkp6',scan+shift+84 ; SF1 '\kkp7',scan+63 ; F5 '\kkp8',scan+64 ; F6 '\kkp9',scan+65 ; F7 '\kkpenter',scan+shift+89 ; SF6 '\kkpcoma',scan+shift+85 ; SF2 '\kkpminus',scan+66 ; F8 '\kkpdot',scan+shift+91 ; SF8 '\kuparr',scan+72 ; VT100 cursor keys (arrows) '\kdnarr',scan+80 '\klfarr',scan+75 '\krtarr',scan+77 '\kupscan',scan+73 ; PgUp Kermit screen roll back keys '\kdnscan',scan+81 ; PgDn '\khomscn',scan+71 ; Home '\kendscn',scan+79 ; End '\kupone',scan+1156 ; Ctrl PgUp one line scrolls '\kdnone',scan+1142 ; Ctrl PgDn '\kmodeline',scan+74 ; Kermit toggle mode line Keypad - '\ktermtype',scan+2178 ; Kermit toggle terminal type Alt - '\kreset',scan+2179 ; Kermit reset terminal Alt = '\kprtscn',scan+1138 ; Kermit toggle print screen Ctrl * '\kdump',scan+1141 ; Kermit Dump Screen Ctrl End '\x7f',scan+83 ; Del key sends DEL '\x7f',scan+14 ; Backspace key sends DEL '\kexit',scan+2093 ; Exit connect mode Alt X '\kstatus',scan+2079 ; Connect mode status Alt S '\kbreak',scan+2096 ; Send a Break Alt B '\khelp',scan+2083 ; Connect mode drop down menu Alt H ------------------------------------------------ Translation of bytes received at the serial port while in Connect mode: The pair of commands SET TRANSlation INPUT received-char local-char and SHOW TRANSlation INPUT provide an elementary conversion of one raw byte to another. The received character is translated into the local character before the rest of Kermit can see it; this is effective for only Connect mode (not file transfers or scripts). SET TRANS IN requires both byte specifications to be on the command line. The form of the byte specs is an ascii character or a numerical value, such as \65 (decimal for A), or \o101 (octal for A), or \x41 (hex for A). Examples: SET TRANS IN p \156 ; letter p sent to us is changed to Pound Sterling sign (decimal 156) SET TRANS IN o \143 ; letter o is visible as long A (as in Angstrom) SET TRANS IN \143 \7 ; long a translated to a beep (control g) SHOW TRANS displays bytes subject to change by Set Trans information. Note: the LOG file will show the local (translated) character. -------------------------------------------------- SHOW STATistics shows the byte counts, etc. for file transfers. --------------------------------------------------- LOG {PACKET | SESSION} filespec revised LOG command DISABLE {DELETE | HOST} server mode control (protection?) ENABLE {DELETE | HOST} ditto SET SEND DELAY seconds waits the indicated number of seconds before starting a SEND command. ============================== File msk229b.not, old and you have all this material from an earlier digest. Notes on MS Kermit 2.29b 12 Jan 1987 This most recent version of MS Kermit 2.29 has support for VT102 printer commands, Long packets, and Scripts. Additionally, it has corrections to most problems known at this time. A new kind of MS Kermit, mstclo.boo, is available for near clones of IBM PC's but whose serial port hardware is not similar. Here is a description from the originator Glenn Everhart: This module is derived from MSXIBM.ASM and is intended for IBM PC near-clones that differ in their serial I/O but emulate the IBM BIOS. Such machines include Seequa Chameleon, DG/1, and others. The idea is to use the VT100 emulation (which will work) but use BIOS for all serial I/O. This is not interrupt driven and so will (unfortunately) not be able to keep up well at high baud rates. Nevertheless, it will be far better than the old Seequa version which didn't emulate anything. Glenn Everhart, RCA, via Bugs and internal improvments ----------------------------- Two important problems with MS Kermit 2.29 (no letter) were an incompatibility with Hayes internal modems, and related modems: the modem would hangup the phone when a file transfer completed or Connect mode were exited, and secondly, null characters could be sent at the start of a file transfer or when Connect mode was entered. It seems that several mainframes regard null characters as important signals rather than as fillers. We have tested this version with a real Hayes 1200B modem with satisfactory results (whew!, but lets keep our fingers crossed). There were numerous small problems throughout MS Kermit, as might be expected, and those identified to date have been addressed. One important one was the serial port was left active if one PUSHed to DOS while in Connect mode. Serious DOS errors are trapped by Kermit to prevent Kermit from being aborted with the serial port interrupt alive and with a couple of other items redirected to Kermit itself. The most common such error is "Drive Not Ready." Previously, these conditions would invoke the normal DOS Critical Error proc which would request "Abort, Retry, Ignore?" and would abort the program if Abort were chosen. Now, Kermit exercises a fourth option, Fail the Operation, when these errors occur. Procedures spawning a second copy of Command.Com (DIR etc) still can yield the A/R/I message but it is harmless in this case. However, if such a message arises while Kermit is in Server mode a human must still type the answer locally. The implementation replaces the normal DOS Control-Break (^C) and Critical Error handlers with Kermit's own handlers and restores the originals when Kermit exits. Numerous small bugs concerning negotiated parameters (8 bit quoting, Block check types, etc) have been fixed; these mainly concerned Server mode operations. The terminal emulator no longer responds to the answer-back msg request; there is no answer-back message in the emulator. Screen handling has been improved internally, but it still has a few glitches. While in Connect mode 8 bit received data will be passed through to the terminal processor if the Parity type is None. If Debugging is ON then characters with their high bit set will be displayed as a tilde and then a code for the lower 7 bits; i.e., 10000001b is displayed as ~^A. Note: due to network quirks these characters may be mistranslated; the tilde is the funny wiggle character above the accent mark and the control symbol is a caret. Addition to Set Display commnad ------------------------------- Set Display Regular | Serial | Quiet | 7-bit | 8-bit The keywords 7-bit and 8-bit have been added to control displays of characters in non-file transfer modes. 7-bit is the default and 8-bit becomes meaningless when parity is other than None. The Set Display command accepts two keywords in one command, processed left to right. Addition to Set Prompt command ------------------------------ Special characters, such as escape, can be included in text of Kermit's prompt by specifying them as octal numbers in the form \ooo where o is an octal digit. Escape itself is \33. To return to Kermit's default prompt give the Set Prompt command without text. The replacement prompt can be up to 80 characters long. VT102 Printer support, for emulator in IBM and NEC AP3 versions. ---------------------- New escape sequences: ESC [ i Print the entire screen (24 user lines) or just the text in the scrolling region, depending on ESC [ ? 19 h/l below. ESC [ 0 i is an equivalent command. ESC [ ? 1 i Print the line containing the cursor. ESC [ 4 i Disable Controller print. Cursor returns to its position when ESC [ 5 i was encountered earlier. ESC [ ? 4 i Disable Auto Print. ESC [ 5 i Enable Controller print; incoming text is sent to printer but not to the screen. Escape sequences are recognized and acted upon but are not printed. Cursor movement cannot be prevented. ESC [ ? 5 i Enable Auto Print; incoming text is sent to both screen and printer. Escape sequences are recognized and acted upon but are not printed. ESC [ ? 18 h Set Print termination char; requests Form Feed be printed after each Print Screen operation (ESC [ i). ESC [ ? 18 l Reset Print termination char; no FF after Print screen. ESC [ ? 19 h Sets print area of ESC [ i to be the whole screen (24 lines). ESC [ ? 19 l Resets print area of ESC [ i to be just scrolling region. ESC [ ? 15 n Request from remote host for printer status report. ESC [ ? 10 n Response to ESC [ ? 15 n if printer is ready. ESC [ ? 13 n Response to ESC [ ? 15 n if printer is not ready. The print device is selected to be the system printer (system file handle 4, LPT1) and the user has no choice in the matter. If the printer is not ready then a message to this effect is shown on the mode line (line 25) and the print request is skipped. Skipping is done to prevent systems from being hung just because the printer was not plugged in or similar trivia. Trailing spaces on each line are trimmed off to save printing time. These print screen operations should be compatible with all the other screen to printer operations (screen dump key, Log to PRN, DOS print screen, etc). Startup conditions are to reset both Print termination char and screen area bits; i.e., no FF after a print screen command and use scrolling region. Long Packets. ------------- This version can use packets up to 1000 bytes in length. The trans- mitter selects the type of packet (Regular or Long) based upon the size of the data to be sent in that particular packet; negotiations at the start of a file transfer determine the maximum length. The receiver is prepared to accept Long packets at any time up to a maximum length set by the user. The commands Set Send Pack ### and Set Receive Pack ### limit the maximum packet size. ### can be as large as 1000. Kermit uses 94 byte packets as its default maximum size; longer packets will be employed only if the user gives the Set Send/Receive Pack commands above. The IBM serial port interrupt routine, buffer handler for received chars, and the packet assembly/disassembly routines Spack and Rpack have been completely rewritten for efficiency, Long packets, and high speed operations. It is possible to operate at 38400 baud on a plain 4.77 MHz IBM PC provided that the clock tic routine is not loaded with time consuming extras (Helpful Utilities, print spoolers, screen savers, and the like). Long packet and high efficiency code are system independent; fancy high speed operation code is for IBM PC's and clones and the DEC Rainbow. Scripts. -------- A simple DEC 20 style script and raw file upload facility has been written by Jim Sturdevant and myself (he did the original version and we developed it from there). This code is actually system independent. A quick discussion is reproduced below, and the Kermit Help menu has further cryptic guidance. ---- A quick guide to scripts in MS Kermit 2.29. There are several main script commands shown below in Upper case and yet another batch of Set commands to establish operational parameter for scripts. OUTPUT text Sends the single line of text out the serial port. Spaces and tabs are included. Control characters such as a carriage return must be stated as an octal number preceeded by a backslash: carriage return is \15, line feed is \12, bell is \7, and so forth. Example, dial the phone via a modem: Output atdt 5,1234, (918) 555-1212\15 The "text" also can be the first line of a file or even from the console if the first letter of the text is an at-sign, @filename or @con. Thus, Output @con reads a line from the console and sends it out the serial port. INPUT [time] text This is a heavily used operation which reads characters from the serial port and attempts to match them to the line of text, or times out if it can't. A common command of this kind would be Input 30 Username: The sequence above waits up to 30 seconds for the pattern Username: to appear. If it does then the next script command is executed. If it does not appear then the script file can be told to Quit or to Proceed as if the pattern did occur. The time field is optional and is nominally 1 second. Selection of Quit or Proceed and the default waiting time are governed by the Set Input command discussed below. Text may also be replaced by at-sign filename to cause the pattern to be selected as the first line in that file. If the text pattern is omitted then the Input command reads characters from the serial port, displays and then discards them. A recent addition allows a carriage return typed at the local keyboard to force a pattern match (for those of us with limited patience concerning recalcerant remote hosts). PAUSE [time] Waits 1 second, or the number of seconds in the optional argument. ECHO text Simply writes the line of text on the screen. CLRINP Empties the serial port's buffer of stored but not yet read characters. TRANSMIT filespec [prompt] Raw file upload. Sends the named file (no wild cards) a line at a time to the remote host. Each line is expected to end with carriage return-line feed, and the trailing line feed is not sent. After each line Kermit waits for a prompt character from the other side. The default prompt char is a line feed. The command line allows the prompt to be changed to any other character (control codes are expressed as an octal number in the form \ooo); specifying a prompt of \0 means do not wait for a prompt. Alternatively, pushing the local Return key simulates reception of prompt. Trans foo.bar \7 send file "foo.bar", expect ^G as a prompt. SET INPUT commands: Set Input Default-timeout seconds Changes the waiting time from 1 second to this new value. Set Input Timeout-action Proceed or Quit Determines whether or not the current script file is to be continued or exited if a timeout occurs. Proceed is the default and means that timeouts are ignored. Quit causes the current script file to be exited and control passed to either the next higher level script file (if the present one were invoked by such) or to Kermit's main prompt. Set Input Case Ignore or Observe Says whether or not to distinguish upper and lower case text when doing a matchup in the INPUT command. Ignore causes upper and lower case letters to be considered the same. Default is to Ignore case distinctions. Set Input Echo On or Off Show on the screen characters read from the serial port during the script operation, or not. Default is On, show them. Values of Set Input things are shown on Kermit's Status display. Construction of a script file. Kermit has the ability to read a file, called a Take file in Kermit-ese, and execute the contents as Kermit commands. The Kermit command to do this is TAKE filename. Within such a file may be another Take command, and within it yet another Take and so on. Thus, the script is prepared as an ordinary text file and is invoked within Kermit by saying Take filename; a complete working example is given below. Before getting to it, however, a word or two about timeouts. If the action on timing out is set to Quit then the current Take file is exited whenever a timeout occurs and processing continues at any next higher level Take file; there is no conditional branching in this script facility. Also, Kermit looks for a particular file, MSKERMIT.INI, at startup time and executes it as the first Take file; you may place normal startup and script commands there as a convenience. An example script is shown below for connecting to machine VAXB via a modem and a Data Switch. The lines starting with Comment are ignored by Kermit and are there as a tutorial guide. Comments may also be placed on a line beginning with a semicolon. Upper case is used for clarity. File LOGIN.SCP - Comment set Kermit's baud rate to 2400 SET SPEED 2400 Comment flush any old junk CLRINP Comment don't display Take file commands as we go SET TAKE OFF Comment quit script if proper answers do not appear SET INPUT TIMEOUT-ACTION QUIT Comment see if modem is alive, hello modem. OUTPUT AT\15 Comment look for its normal response INPUT OK Comment dial the Micom switch (from on-campus) OUTPUT ATDT 3458\15 Comment look for phone being answered INPUT 25 CONNECT Comment wait 1 sec for modem to get ready PAUSE 1 Comment then send control code carriage return, Comment expressed as an octal number preceded by \. OUTPUT \15 Comment wait a sec for the switch to wake up PAUSE 1 Comment one more time so the switch recognizes our baud rate OUTPUT \15 Comment find first part of switch's announcement INPUT 10 slowly Comment ignore timeouts from here on SET INPUT TIMEOUT PROCEED Comment find last word of the announcement INPUT 15 CLASS Comment tell the switch where we want to attach OUTPUT VAXB\15 Comment look for final prompt of Go and a beep INPUT 20 Go\7 Comment let switch get ready for our response PAUSE 1 Comment wakeup vaxb, c/r's, slowly as instructed OUTPUT \15 PAUSE 1 OUTPUT \15 PAUSE 1 Comment third c/r, just in case. Awaken Vaxen OUTPUT \15 Comment look for login sequence INPUT Username: Comment give our username OUTPUT ItsMeAgain\15 INPUT Password: Comment give ourselves a prompt and read from console ECHO \15\12Enter password: OUTPUT @con Comment we're in, go test for new mail msg TAKE mail.scp Comment go into VT102 terminal emulation mode CONNECT And here is file MAIL.SCP, with added comments - Comment show serial port traffic as we go SET TAKE ON Comment Exit this file if timeout (no new mail) SET INPUT TIMEOUT QUIT Comment look for keyword Mail, timeout if none INPUT 10 Mail Comment must be mail if we are still here, read it OUTPUT mail\15 --------------------------------------------------------------- Joe Doupnik jrd@usu.bitnet ========================== end of message ================================