home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / ckc197.zip / ckvins.txt < prev    next >
Text File  |  2000-02-27  |  68KB  |  1,611 lines

  1. C-KERMIT 7.0 INSTALLATION INSTRUCTIONS FOR VMS and OpenVMS          -*-text-*-
  2.  
  3.  
  4.   As of:  C-Kermit 7.0.197
  5.   This file last updated:  8 February 2000
  6.  
  7.   F. da Cruz, C. Gianone, M. Evarts, Columbia University, New York, NY.
  8.   Terry Kennedy, Saint Peters College, Jersey City, NJ.
  9.   And: Peter Mossel, James Sturdevant, Richard Gilbert, Sebastian Bazley.
  10.  
  11.   Copyright (C) 1985, 2000,
  12.     Trustees of Columbia University in the City of New York.
  13.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  14.     copyright text in the ckcmai.c module for disclaimer and permissions.
  15.  
  16.  
  17. DOCUMENTATION
  18.  
  19. Please purchase the manual if you have not already done so.  Sales of the
  20. manual are the primary source of revenue for the nonprofit but entirely
  21. self-funding Kermit Project.
  22.  
  23.   Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Second Edition,
  24.   1997, Digital Press / Butterworth-Heinemann, Woburn, MA, ISBN 1-55558-164-1
  25.   US single-copy price: $44.95; quantity discounts available.  Available in
  26.   computer bookstores or directly from Columbia University:
  27.  
  28.     The Kermit Project
  29.     Columbia University
  30.     612 West 115th Street
  31.     New York NY  10025-7799  USA
  32.     Telephone: +1 (212) 854-3703
  33.     Email: kermit-orders@columbia.edu
  34.     Web: http://www.columbia.edu/kermit/
  35.  
  36.   The CKERMIT2.TXT file contains supplementary info for C-Kermit 7.0 to be
  37.   used until the 3rd edition of the manual is ready.
  38.  
  39.  
  40. CONTENTS:
  41.  
  42.   QUICKSTART GUIDE
  43.      I. BOOTSTRAPPING
  44.     II. CONFIGURING VMS FOR BEST RESULTS WITH KERMIT
  45.         1. TERMINAL BUFFER SIZE
  46.         2. USER QUOTAS AND PRIVILEGES
  47.         3. CONFIGURING SERIAL COMMUNICATION PORTS
  48.         4. CONFIGURING LAT DEVICES
  49.         5. THE VIRTUAL TERMINAL DRIVER
  50.         6. CAPTIVE ACCOUNTS AND RESTRICTED ACCESS
  51.    III. DECODING VMS C-KERMIT HEX FILES
  52.     IV. INSTALLING VMS C-KERMIT
  53.      V. USING MODEMS
  54.     VI. BUILDING VMS C-KERMIT FROM THE SOURCE CODE
  55.         1. PROGRAMMING TIPS
  56.         2. VMS TCP/IP NETWORKING SUPPORT FOR C-KERMIT
  57.    VII. CASE STUDY: ALPHA SETUP AND TEST RESULTS
  58.  (VIII. MAKING AND USING VMSINSTAL KITS)
  59.  
  60.  
  61. QUICKSTART GUIDE
  62.  
  63. To install VMS C-Kermit on VAX/(Open)VMS 5.0 or later, and Alpha OpenVMS
  64. (all versions), please follow the instructions in the next three major
  65. sections of this file.  The first section, CONFIGURING VMS FOR BEST RESULTS
  66. WITH KERMIT, contains important information needed to achieve solid
  67. performance from C-Kermit.  Please read it and follow the suggestions or give
  68. it to your system manager.  The second section, DECODING VMS C-KERMIT HEX
  69. FILES, explains the process required to create an executable image from the
  70. "text-only" HEX files.  These HEX files are distributed on the ANSI tapes from
  71. Columbia University and are decoded using an assembly-language program which
  72. is also provided.  If you have received VMS C-Kermit on TK50 tape in BACKUP
  73. format, then you already have binary executable files included on the tape.
  74. The third section, INSTALLING VMS C-KERMIT, provides step-by-step instructions
  75. for making C-Kermit available and fully configured for your users.
  76.  
  77. If you are running a version of VAX/VMS *prior* to 5.0, or need to customize
  78. the C-Kermit sources, please refer to section IV, BUILDING VMS C-KERMIT FROM
  79. THE SOURCE CODE.
  80.  
  81.  
  82. I - BOOTSTRAPPING
  83.  
  84. In many cases, you can get C-Kermit onto your VMS system using FTP, an old
  85. version of Kermit that is already there, or some other existing file transfer
  86. method, or by copying it from magnetic tape, diskette, or CDROM.
  87.  
  88. In case none of those methods are available to you, here is a method to
  89. "bootstrap" C-Kermit onto a VAX system from another computer.  It uses the
  90. older and smaller "Kermit-32" program (which runs only on VAXes, not Alphas)
  91. to load the newer and larger C-Kermit program.
  92.  
  93. Suppose, for example, you have a PC with DOS, Windows, or some form of UNIX
  94. such as Linux, which has FTP capability, and the PC is connected to your VAX
  95. through its serial port (directly, with a null modem cable, or else through a
  96. modem), and the PC already has its own Kermit program installed (MS-DOS
  97. Kermit, Kermit 95, or C-Kermit, depending on the OS).  Here are specific
  98. instructions you can try; this example assumes the PC has Linux and C-Kermit:
  99.  
  100.   1. Get the files vmsmit.hex and vmsdeh.mar with anonymous ftp in text mode
  101.      onto your PC from kermit.columbia.edu, directory kermit/b.  Also get
  102.      the appropriate version of VMS C-Kermit on your PC from the same site.
  103.  
  104.   2. Use C-Kermit on Linux to log in to your VAX:
  105.  
  106.        set line /dev/ttyS0 ; or whatever
  107.        set speed 19200
  108.        set flow xon/xoff
  109.        set transmit eof \26
  110.        connect
  111.  
  112.   3. Log in to VMS, SET DEFAULT to the desired directory, and then give
  113.      the following commands at the VMS prompt:
  114.  
  115.        set terminal /ttsync /hostsync
  116.  
  117.   4. Give the following command at the VMS prompt:
  118.  
  119.        create vmsmit.hex
  120.  
  121.   5. Escape back to C-Kermit on Linux with Ctrl-\ C.
  122.  
  123.   6. Tell C-Kermit to:
  124.  
  125.        transmit vmsmit.hex
  126.  
  127.   7. Repeat steps 4-6 for VMSDEH.MAR.
  128.  
  129.   8. Now you should have VMSMIT.HEX and VMSDEH.MAR in your VMS directory.
  130.      Give the following commands to VMS:
  131.  
  132.        macro vmsdeh
  133.        link vmsdeh
  134.        run vmsdeh
  135.  
  136.   9. When VMSDEH prompts for a filename, type "vmsmit.hex".
  137.  
  138.  10. When VMSDEH is finished, it will prompt you for another filename.
  139.      Just press the Enter (Return) key.
  140.  
  141.  11. Now VMSMIT.EXE should be in your directory.  To run it, type:
  142.  
  143.        run vmsmit
  144.  
  145.      at the VMS prompt.
  146.  
  147.  12. Use this program to transfer the appropriate version of C-Kermit
  148.      to VMS, and then you will have a modern, fast, up-to-date
  149.      version of Kermit.
  150.  
  151. WARNING: You can't use Kermit-32 ("Bliss Kermit") to receive a VMS binary
  152. program.  If you have to use Kermit-32 to get C-Kermit onto your VAX, you'll
  153. need to transfer a hex-encoded version of the binary, rather than the straight
  154. binary, and then "dehexify" the result as shown above.  This is because
  155. Kermit-32 stores incoming binary files in a format that is not appropriate for
  156. VMS executables (variable 510 instead of fixed 512).
  157.  
  158.  
  159. II - CONFIGURING VMS FOR BEST RESULTS WITH KERMIT
  160.  
  161.   II.1. TERMINAL BUFFER SIZE
  162.  
  163. VMS is shipped with default installation parameters designed to function on
  164. all possible configurations.  Some of these parameters have not been changed
  165. since the "average" VMS system was a VAX-11/780 with 1Mb of memory.
  166.  
  167. The main parameter that affects Kermit is the terminal type-ahead buffer size,
  168. which applies to serial terminal devices (with the TT or TX prefix).  There
  169. are two possible values in VMS - the "normal" size and the "alternate" size.
  170. The defaults for these are 78 and 200 bytes, respectively.  If more data
  171. arrives at the terminal driver than these buffers can hold (which is a likely
  172. occurrence during file transfer), it will be discarded and file transfers will
  173. be slowed down or terminated by errors.
  174.  
  175. This is most frequently seen when receiving files on a slow VAX, particularly
  176. when using long packets and/or sliding windows.  File reception requires
  177. larger system buffers (to hold arriving packets), and the speed of the VAX
  178. controls how quickly Kermit can empty them.
  179.  
  180. The recommended minimum size for each of these buffers is the number shown as
  181. "Buffer size" by the C-Kermit SHOW PROTOCOL command, which is the total amount
  182. of memory allocated by C-Kermit for packet buffers (window slots times packet
  183. length).  VMS C-Kermit is shipped with a buffer size of 9065, which can be
  184. altered by the user with a SET BUFFERS command.
  185.  
  186. To change the values of the VMS typeahead buffer sizes, you should edit the
  187. file SYS$SYSTEM:MODPARAMS.DAT.  Determine the new values you want to use and
  188. add lines like the following to the end of the MODPARAMS.DAT file:
  189.  
  190.   MIN_TTY_TYPAHDSZ = new_value_for_regular    ! For VMS C-Kermit
  191.   MIN_TTY_ALTYPAHD = new_value_for_alternate    ! For VMS C-Kermit
  192.  
  193. for example:
  194.  
  195.   MIN_TTY_TYPAHDSZ = 2064
  196.   MIN_TTY_ALTYPAHD = 2064
  197.  
  198. The TTY_ALTYPAHD size should be at least as great as the TTY_TYPAHDSZ.
  199. Digital recommends a value of 2064 or greater for TTY_ALTYPAHD if you are
  200. running VMS V5.5 or higher, or if you are running the optional LATmaster code
  201. under VMS V5.4-1, -2, or -3.
  202.  
  203. You should also examine this file to be sure there aren't any other
  204. definitions for TTY_TYPAHDSZ or TTY_ALTYPAHD.  If there are, you'll get
  205. warning messages in the next step.
  206.  
  207.     You may wish to simply set TTY_TYPAHDSZ=TTY_ALTYPAHD=2064, since
  208.     most common VMS "TTY ports" these days are actually LAT or TCP/IP
  209.     devices, which cannot easily be configured to use the alternate
  210.     buffer.  Also, it takes a privileged user or program to set a port
  211.     to use the alternate buffer, and since we do not recommend
  212.     installing Kermit with privileges, this would restrict Kermit access
  213.     to privileged users.
  214.  
  215.     Let's consider a medium-sized VAX with perhaps 64 "ports" (either
  216.     serial ports or LAT or TCP/IP network ports).  This system probably
  217.     has at least 16 megabytes of memory.  Configuring TTY_TYPAHDSZ to
  218.     2064 will take up 64 * 2064 bytes of memory, or 132096 bytes.  This
  219.     is less than 1 per cent of available memory.  Most systems would
  220.     have more than 16Mb of memory for 64 simultaneous users, lowering
  221.     the percentage even further.
  222.  
  223. In some cases, it might also be necessary to increase your system's MAXBUF
  224. parameter.  It should be somewhat longer than the longest packet you want
  225. Kermit to be able to send or receive, to allow for SYS$QIO overhead (the
  226. bigger the value, the more overhead).  DEC currently recommends 2300, which
  227. should be sufficient for 2K (2048-byte) packets.  If you want to use
  228. C-Kermit's maximum packet length, 9024, then your MAXBUF should be set to
  229. about 12000.  Do this in the SYS$SYSTEM:MODPARAMS.DAT file:
  230.  
  231.   MIN_MAXBUF=xxxx
  232.  
  233. You should also ensure that PQL_MBYTLM is at least MAXBUF + 2300; otherwise,
  234. at least on early 5.x VMS releases (reportedly), the system can crash.
  235.  
  236. To have these changes take effect, run the "AUTOGEN" procedure:
  237.  
  238.   @SYS$UPDATE:AUTOGEN GETDATA SETPARAMS
  239.  
  240. or:
  241.  
  242.   @SYS$UPDATE:AUTOGEN SAVPARAMS SETPARAMS
  243.  
  244. or:
  245.  
  246.   @SYS$UPDATE:AUTOGEN SAVPARAMS GENPARAMS FEEDBACK
  247.   DIFFERENCE/OUTPUT=DIFF.DAT/PARALLEL SETPARAMS.DAT
  248.   EDIT/TPU DIFF.DAT ! Check out what Autogen is going to do to me.
  249.   @SYS$UPDATE:AUTOGEN SETPARAMS REBOOT
  250.  
  251. (Read about AUTOGEN in the VMS Guide to System Management)
  252.  
  253. This incorporates the new buffer sizes into the system configuration, and they
  254. will take effect the next time the system is reloaded.
  255.  
  256. To examine your system parameters:
  257.  
  258.   run sys$system:sysgen
  259.   SYSGEN> use current
  260.   SYSGEN> show maxbuf                (should be at least 2064)
  261.   SYSGEN> show virtualpagecnt        (should be at least 50000)
  262.   SYSGEN> show /tty                  (TTY_ALTYPAHD should be at least 2064)
  263.  
  264. In an emergency, or for testing purposes, you can also change your MIN_MAXBUF
  265. value "on the fly":
  266.  
  267.   $ run sys$system:sysgen
  268.   SYSGEN> set maxbuf 2300
  269.   SYSGEN> write active
  270.   SYSGEN> exit
  271.  
  272. This operation should be used with caution, and should probably NOT be used
  273. with values greater than about 3000.  The AUTOGEN procedure is safer because
  274. it understands the relationships among the major parameters.
  275.  
  276. NOTE: Although it is still recommended that you make your MAXBUF setting
  277. large enough for Kermit packets, it is (as of C-Kermit edit 190) no longer
  278. strictly necessary.  C-Kermit's packet writer now recovers from MAXBUF and
  279. quota-exceeded errors automatically by backing off and retransmitting the
  280. packet in appropriate-size chunks (size determined by trial and error).
  281. But this involves a small amount of additional overhead, so it's still best
  282. to have adequate MAXBUF and quotas.
  283.  
  284.   II.2. USER QUOTAS AND PRIVILEGES
  285.  
  286. C-Kermit communications are also affected by the user's BYTLM quota and
  287. possibly also the process page quota (PGFLQUO).  Also the BIOLM quota
  288. (should be at least 10 or 20).
  289.  
  290. In modern versions of VMS, the default BYTLM quota is 8192, which should
  291. normally be adequate.  If C-Kermit users experience error messages informing
  292. them that a quota was exceeded during terminal emulation or file transfer, the
  293. system manager should increase the user's BYTLM and/or process page quota.  To
  294. find out the user's quotas, the system manager should:
  295.  
  296.   set default sys$system
  297.   run authorize
  298.   UAF> show <username>
  299.  
  300. Then look for the relevant quotas and adjust them as required.  The BYTLM
  301. quota should be somewhat greater than the product of Kermit's window size
  302. and packet size, for example, 8192 for 4 window slots and 2000-byte-packets.
  303. PGFLQUO should be 20,000 or higher.
  304.  
  305. If users will be using C-Kermit's PUSH command or issuing REMOTE commands (such
  306. as REMOTE DIR) to the VMS C-Kermit server, the user will need to have the
  307. ability to create subprocesses (AUTHORIZE parameter PRCLM).  If Kermit will
  308. itself be invoked as a subprocess (for example, from within a menu system) this
  309. should be considered as well.  Kermit uses local mailboxes for remote command
  310. execution, so users will also need the TMPMBX privilege if these commands are
  311. to be used.
  312.  
  313.   II.3. CONFIGURING SERIAL COMMUNICATION PORTS
  314.  
  315. If your system has a port that is frequently used for file transfers (for
  316. example, with a modem), you should have your system manager enable the
  317. alternate type-ahead buffer, and direct memory access, by placing the command:
  318.  
  319.   $ SET TERMINAL ddcu:/PERMANENT/ALTYPEAHD/DMA
  320.  
  321. in the system-wide startup command file, where ddcu: is the name of the
  322. device, for each such device.  If DMA is not enabled, Kermit will run more
  323. slowly and use a lot more CPU time.  (Note: DMA is only available on certain
  324. types of devices; e.g. TX but not TT or LTA).
  325.  
  326. If the device is connected to a modem, and is to be used for dialing out,
  327. also include the /MODEM qualifier:
  328.  
  329.   $ SET TERMINAL ddcu:/PERMANENT/ALTYPEAHD/DMA/MODEM
  330.  
  331. The modem must also be configured to make DSR follow CD.  In modems that use
  332. the Hayes AT command set, the command is AT&S1.  If you can't configure your
  333. modem this way, then VMS will hang up on it during the dialing process,
  334. preventing you from completing calls (C-Kermit's DIAL command will make this
  335. setting in the modem for you on a per-call basis, but only if this information
  336. is in its internal modems database; tell C-Kermit to SET MODEM TYPE xxx and
  337. then SHOW MODEM to find out).  A less desirable workaround is to configure the
  338. modem to ignore DTR (AT&D0), but this can block normal hangup methods even
  339. when you want to use them, thus opening security loopholes.  A third
  340. possibility is to jumper the CD and DSR wires in your modem cable.
  341.  
  342. If the VMS port is not connected to a modem or other data communications
  343. device that follows the RS-232 (V.24) signaling conventions, or if the VMS
  344. port does not have a full complement of RS-232 wires (which are lacking in
  345. modular MMJ ports, for example), you might have to set the /NOMODEM qualifier
  346. instead:
  347.  
  348.   $ SET TERMINAL ddcu:/PERMANENT/ALTYPEAHD/DMA/NOMODEM
  349.  
  350. Even with these settings you might experience what UNIX users know fondly as
  351. "getty babble", which occurs when logins are enabled on the device.  This
  352. occurs with Kermit, SET HOST/DTE, or any other method of communication; for
  353. example, AT<CR> is sent to the modem, the modem echoes AT<CRLF> and then says
  354. OK<CRLF>.  VMS thinks a user named AT is trying to log in with a password of
  355. OK, and says "User authorization failure", but the modem echoes this too,
  356. and so on, back and forth, many times, maybe forever.  Reportedly, this can
  357. be prevented by giving the SECURE attribute to the port in question, e.g.:
  358.  
  359.   $ SET TERMINAL ddcu:/PERMANENT/SECURE
  360.  
  361. which disables logins on the port until a BREAK signal is received.
  362.  
  363. Additionally, for non-privileged users to access a terminal device, they need
  364. to be granted access to it.  The default for terminals is access only by users
  365. with SYSTEM privileges (UIC group less than or equal to MAXSYSGROUP, or with
  366. SYSPRV privilege).  See the VMS documentation for the SET PROTECTION command
  367. for more information.  Note that if you grant everyone access to the port,
  368. anyone can make phone calls via the modem, so you might want to limit this to
  369. particular users, possibly by using a device ACL (VMS V5.0 and later only).
  370.  
  371.   II.4. CONFIGURING LAT DEVICES
  372.  
  373. In this discussion, we are using a DECserver 700-16 (the kind with RJ45
  374. connectors that lack a full complement of modem signals).  (For examples
  375. of configuring the DECserver 200, also see Section IV.)
  376.  
  377.   II.4.1. CONNECTING A LAT PORT TO A PC
  378.  
  379. We'll begin by connecting a PC's serial port to DECserver Port 2.  Commands
  380. are given at the DECserver's console, normally Port 1.  In case it is a new
  381. DECserver and you haven't yet given it a name:
  382.  
  383.   Local> set privilege
  384.   Local> define server name latbox
  385.   Local> initialize delay 0
  386.  
  387. We'll be using the server name "latbox" in the examples.  Now set up port
  388. minimally for a test:
  389.  
  390.   Local> define port 2 autobaud disable
  391.   Local> define port 2 speed 19200
  392.   Local> define port 2 signal check disable
  393.   Local> logout port 2
  394.  
  395. Then:
  396.  
  397.  1. Plug a BN25G-04 cable into LAT port 2.
  398.  
  399.  2. Plug the appropriate adapter (H8585-something) into the other end
  400.     and connect it to the PC's serial port.  In this case, the PC has
  401.     a DB-9, so we use the H8585-AA.
  402.  
  403.  3. Start Kermit on the PC and tell it to:
  404.  
  405.       SET PORT COM1 (or whatever)
  406.       SET SPEED 19200
  407.       SET FLOW NONE
  408.       SET CARRIER OFF
  409.       CONNECT
  410.  
  411.  4. Press the Enter key.  You should see the Local> prompt, and you should
  412.     be able to type commands, e.g. to connect to your VMS system.
  413.  
  414. OK, so it works in local mode.  If not, check your cabling.  Now to set it up
  415. for remote mode, i.e. to allow VMS to make a connection to the PC through the
  416. DECserver port:
  417.  
  418.   Local> change port 2 access remote
  419.   Local> show port 2
  420.  
  421. Take note of the port's name; by default it is PORT_2, but you can change it
  422. to anything you like with:
  423.  
  424.   Local> change port 2 name blah
  425.  
  426. We'll stick with PORT_2 in this discussion.
  427.  
  428. With Kermit on the PC is still in CONNECT mode, do:
  429.  
  430.   Local> test port 2
  431.  
  432. This should put a test pattern on PC screen.
  433.  
  434. Now to set up the port for use from VMS.  First enable SYSPRV, CMKRNL, LOG_IO,
  435. and SYSNAM privileges, then:
  436.  
  437.   $ run sys$system:latcp
  438.   LATCP> create port lta600:
  439.   LATCP> set port lta600: /application /node=latbox /port=port_2 /noqueue
  440.   LATCP> exit
  441.  
  442. The /NODE switch gives the nodename of the DECserver; the /PORT switch gives
  443. the port *name* (not number) of the port on the DECserver.  The /NOQUEUE
  444. switch is important; otherwise if somebody does "set port lta600" when it is
  445. in use, they will sit there and wait until it becomes free.
  446.  
  447. Then in VMS:
  448.  
  449.   $ set terminal LTA600: /permanent /fullduplex /altypeahd /speed=19200
  450.  
  451. This sets the typeahead buffer and makes the speeds match.  You can use LATCP
  452. again to verify the setup:
  453.  
  454.   $ run sys$system:latcp
  455.   LATCP> show port lta600:
  456.  
  457.   Target Port Name: PORT_2       Actual Port Name:
  458.   Target Node Name: LATBOX       Actual Node Name:
  459.   Target Service Name:           Actual Service Name:
  460.  
  461. (Use "show port" without any port number to look at all defined LAT ports.)
  462.  
  463. That's it.  Now start kermit and assign the port:
  464.  
  465.   $ kermit
  466.   C-Kermit> set line lta600:
  467.   C-Kermit> show communications
  468.  
  469. This should display the name and speed of the LAT device, as configured
  470. above.  Then to make the connection:
  471.  
  472.   C-Kermit> connect
  473.  
  474. Type some characters to VMS C-Kermit -- you should see them come out on the
  475. PC's screen.  Type some characters on the PC keyboard and they should come out
  476. on VMS C-Kermit's screen.
  477.  
  478. On the PC, escape back to the Kermit prompt and type "show comm" or "show
  479. modem" to see what modem signals are being presented by the connection.
  480. DECservers that have 25-pin serial connectors, such as the 200 and the 700-8,
  481. can do full modem control, but those with mini connectors, such as the 700-16,
  482. make you choose between limited sets of modem signals; the DECserver can be
  483. configured for either hardware flow control (recommended for high-speed
  484. connections) or DTR/CD (allowing each end of the connection to tell when the
  485. other end has hung up), but you can't have both.  On the DECserver, use:
  486.  
  487.   Local> define port 2 signal select xxx
  488.  
  489. where xxx is CTS-DSR-RTS-DTR or RI-DCD-DSR-DTR, to select the desired
  490. complement of modem signals; the first one for hardware flow control, the
  491. second one for ring/hangup control.
  492.  
  493.   Local> define port 2 signal control enable
  494.   Local> logo port 2
  495.  
  496. On the PC, use "show comm" to make sure the PC sees the CTS signal.  If so,
  497. tell Kermit to:
  498.  
  499.   set flow rts/cts
  500.  
  501. Then put the PC Kermit in server mode and, using VMS C-Kermit as client,
  502. transfer some files.  Experiment with window size, packet length, and
  503. unprefixing to achieve the highest transfer rate.  Then experiment with higher
  504. serial speeds -- this will require a LATCP command on VMS, "change port" and
  505. "logout port" commands on the DECserver, and a "set speed" command in PC
  506. Kermit.
  507.  
  508.   II.4.2. SETTING UP A DIALOUT PORT
  509.  
  510. Now let's connect a modem to DECserver Port 3 for high-speed data transfer
  511. (RTS/CTS, but no RI/CD).  In this example the modem is a USR Courier.
  512.  
  513. Connect port 3 (in this case with BN25G-04 cable with an H8585-AC adapter)
  514. to the modem.  Then at the DECserver:
  515.  
  516.   Local> set privilege
  517.   Local> define port 3 autobaud disable
  518.   Local> define port 3 speed 38400
  519.   Local> define port 3 signal select cts
  520.   Local> define port 3 signal check enable
  521.   Local> define port 3 access remote
  522.   Local> define port 3 name dialout
  523.   Local> logout port 3
  524.   Local> show port 3
  525.  
  526. Back at VMS:
  527.  
  528.   $ run sys$system:latcp
  529.   LATCP> create port lta601:
  530.   LATCP> set port lta601: /application /node=latbox /port=dialout /noqueue
  531.   LATCP> exit
  532.   $ set terminal LTA601: /permanent /fullduplex /altypeahd /speed=38400
  533.  
  534. Now start C-Kermit and assign the port:
  535.  
  536.   $ kermit
  537.   C-Kermit> set modem type usr
  538.   C-Kermit> set line lta601:
  539.   C-Kermit> show comm           ; Speed should be 38400
  540.   C-Kermit> set dial display on ; To verify modem dialog
  541.   C-Kermit> dial 7654321
  542.  
  543. And off you go.
  544.  
  545. For other configurations, refer to your DECserver and LATCP documentation.
  546. You can set up port "hunt groups", you can assign logical names to the VMS
  547. ports, which can refer to single LAT ports or entire hunt groups, and so on.
  548. You can even define "bidirectional" ports for both calling in and calling out,
  549. but these are difficult to troubleshoot when there are problems.
  550.  
  551.   II.4.3. DECSERVERS AND TELNET
  552.  
  553. DECservers that support TCP/IP connections can be used by C-Kermit for shared
  554. dialout modem access.  The DECserver can be configured for this using a
  555. command like:
  556.  
  557.   CHANGE TELNET LISTENER 2001 PORT 1 ENABLE
  558.  
  559. This associates TCP socket 2001 with serial port 1 on the DECserver.
  560. Then you can use Kermit to Telnet to port 2001 on the DECserver and dial
  561. the modem that is on the DECserver's serial port 1.
  562.  
  563. If you cannot get reverse LAT working, but LAT is working, it is still
  564. possible to use Kermit via LAT so long as your system (and Kermit) support
  565. TCP.  Start Kermit, tell it to "set host localhost" (the TCP loopback name).
  566. In connect mode you can log back on to the same system (see the cautions in
  567. "Using C-Kermit" about "C-Kermit in the Middle").
  568.  
  569. Then you can use SET HOST/LAT from the CONNECT session to dial out, login to
  570. the remote system and start the remote Kermit.  Now go back to the original
  571. Kermit session to transfer the files.  You should try it first with SET
  572. PREFIXING ALL in C-Kermit, and probably also SET PARITY SPACE, and relatively
  573. short packets.  If that works, you can try settings that give higher
  574. performance at your own risk.
  575.  
  576.   II.5. THE VIRTUAL TERMINAL DRIVER
  577.  
  578. For incoming modem connections, it can be very useful if the VMS system is set
  579. up to support Virtual Terminals.  Once these have been set up, then if an
  580. incoming connection fails because of line problems, it should be possible to
  581. reconnect to the original session by redialling and logging in again.  You
  582. should then get a prompt asking if you wish to connect to your disconnected
  583. session, allowing you to resume where you left off.  You should see something
  584. like:
  585.  
  586.     You have the following disconnected process:
  587. Terminal   Process name    Image name
  588. VTA456:    ABCDEF          (none)
  589. Connect to above listed process [YES]: Y
  590. Connecting to terminal _VTA456:
  591. ABCDEF>
  592.  
  593. There is a timeout of something like an hour, after which the disconnected
  594. session is deleted entirely.
  595.  
  596. [If on re-dialing the host you find you are reconnected to the original
  597. session without needing to login, then that host has a security problem, as
  598. well as a misconfigured DECserver and/or modem or lead...]
  599.  
  600. The virtual terminal driver is loaded at startup (or later) using SYSGEN or
  601. SYSMAN as appropriate.  The definition for TTY_DEFCHAR2 in MODPARAMS.DAT also
  602. needs to be changed to set the appropriate bit to enable the disconnect
  603. processing by default on all terminals.  [This change needs a reboot.]
  604.  
  605. Something like the following should work (check the VMS manuals):
  606.  
  607. VAX:
  608. $ MCR SYSGEN VTA0/NOADAPTER/DRIVER=TTDRIVER
  609.  
  610. Alpha:
  611. $ MCR SYSMAN IO CONNECT VTA0/NOADAPTER -
  612.         /DRIVER=SYS$LOADABLE_IMAGES:SYS$TTDRIVER.EXE
  613.  
  614. MODPARAMS.DAT:
  615. TTY_DEFCHAR2 = 135170 ! = %x21002. Check the manual!
  616. (%x20000 = Disconnect, %x1000 = Line Edit, %x2 = Autobaud)
  617.  
  618.   II.6. CAPTIVE ACCOUNTS AND RESTRICTED ACCESS
  619.  
  620. Some VMS sites restrict users from getting at the DCL prompt and services by
  621. setting their accounts to be "captive".  This should automatically prevent
  622. C-Kermit's DCL-access commands (such as PUSH) from working.  Any attempt to
  623. execute such a command should result in C-Kermit issuing an error message.
  624. Should a user circumvent this, VMS will automatically terminate the user's
  625. process.  In addition to CAPTIVE, accounts can also be set to RESTRICTED, to
  626. disable all types of spawning.  Note that DEC says that RESTRICTED is only
  627. used "to ensure users complete login processing without interruption". DEC
  628. further states that they intend to modify VMS utilities to no longer prohibit
  629. spawning in a future release.
  630.  
  631. Further, you should be aware that preventing users from getting to DCL only
  632. provides an illusion of security. There are many ways of getting to DCL which
  633. are non-obvious. For cases where absolute security is required, you should in-
  634. vestigate the AUTHORIZE flags CAPTIVE and DISIMAGE. Consult the VMS Security
  635. Manual for more information.
  636.  
  637. C-Kermit itself can be configured to prevent system access, by compiling it
  638. with the NOPUSH option (for this you would have to edit CKVKER.COM file and
  639. add a definition for the symbol NOPUSH to the CFLAGS).  This disables not only
  640. the PUSH command and its synonyms (RUN, @, SPAWN), but also OPEN !READ, OPEN
  641. !WRITE, as well as the server's execution of REMOTE HOST commands.  See
  642. CKCCFG.DOC for further information.
  643.  
  644. There is also a runtime approach for this: put the (invisible) command NOPUSH
  645. someplace where it will always be executed; for example, the system-wide
  646. CKERMIT.INI file, or in the "kermit" command definition:
  647.  
  648.   $ KERMIT :== "$SYS$TOOLS:KERMIT ""-C"" ""NOPUSH"""
  649.  
  650. You can also define the logical name (environment variable) CK_NOPUSH to
  651. achieve the same effect.
  652.  
  653. The NOPUSH command does at runtime exactly what defining the NOPUSH symbol
  654. at compile time does.
  655.  
  656.  
  657. III - DECODING VMS C-KERMIT HEX FILES
  658.  
  659. If you have obtained the executable VMS C-Kermit program encoded in printable
  660. "hex" format on magnetic tape or over a network, you can decode it back into a
  661. runnable .EXE program image using the CKVDEH.MAR program.  This is an
  662. assembly-language program for the VAX or Alpha, which you should assemble,
  663. link, and run as follows:
  664.  
  665.   $ macro ckvdeh  (on the Alpha, substitute "macro/migrate ckvdeh")
  666.   $ link ckvdeh
  667.   $ run ckvdeh
  668.  
  669. CKVDEH prompts you for the input file name and then creates a .EXE file with
  670. the same root name.  For example, if you enter CKVKER.HEX as the source file,
  671. the resulting executable will be CKVKER.EXE.  This procedure works on both the
  672. VAX and the Alpha -- the same program, CKVDEH.MAR, compiles and runs on
  673. both platforms.
  674.  
  675. The C-Kermit .EXE files were built under VAX/(Open)VMS 5.x and Alpha
  676. OpenVMS 1.x (whenever possible; otherwise under 6.1).  The VAX versions will
  677. not run under pre-5.0 VAX/VMS releases.  If you have a VMS 4.x system with C
  678. compiler, however, you should be able to build C-Kermit using the CKVOLD.COM
  679. procedure.
  680.  
  681. Since VMS C-Kermit can be built with no TCP/IP support or with support for
  682. several different TCP/IP packages, and it can be built on both the VAX and
  683. Alpha platforms, you should pick the right .HEX file for your environment.
  684.  
  685. The naming conventions are as follows:
  686.  
  687.   CKVaKER-VMSnn-tttvv.xxx
  688.  
  689. where:
  690.  
  691.   CKV = "C-Kermit for VMS".
  692.     a = architecture: A for Alpha, V for VAX.
  693.   KER = Kermit
  694.    nn = VMS version, e.g. 55 for VMS 5.5, 70 for VMS 7.0.
  695.   ttt = TCP/IP product, if any:
  696.     CMU = CMU-OpenVMS/IP ("CMU/Tek")
  697.     UCX = Compaq (DEC) TCP/IP(*)
  698.     PST = Process Software TCPware
  699.     TGV = Process Software (Cisco (TGV)) MultiNet(*)
  700.     WIN = Attachmate (Wollongong) WIN/TCP (PathWay)(*)
  701.    vv = The version number of the TCP/IP product (may be 2 or characters)
  702.   xxx = HEX (text-encoded binary) or EXE (true binary)
  703.  
  704. When there is no TCP/IP support built in, tttvv is "NONET".
  705.  
  706. (*) It's a bit of a task to keep up with all the buyouts and renaming.
  707.     Any of these companies or products can be snapped up and/or renamed
  708.     at any time, and most of them have been.
  709.  
  710. Examples:
  711.  
  712.   CKVVKER-VMS55-NONET.HEX:   VAX, VMS 5.5, no TCP/IP, hex format.
  713.   CKVAKER-VMS62-TGV40.EXE: Alpha, VMS 6.2, Multinet 4.0, binary format.
  714.  
  715. Not every combination is necessarily available.  In general, an .EXE built
  716. under a certain version of VMS will also run under later VMS versions, but the
  717. opposite is usually not true.  Also, if a version was built under the same
  718. VMS version that you have, but with a higher ECO level (OS or library patches),
  719. it might not run.
  720.  
  721. So try to pick one that was built under a VMS version less than or equal to
  722. yours, and with the the same TCP/IP product you have having with a version
  723. number less than or equal to yours.  If that doesn't work, try the next
  724. earlier one, etc.  If you can't find one for your TCP/IP product, try the
  725. lowest-numbered UCX (DEC TCP/IP) version; most third-party TCP/IP products
  726. also support UCX applications.  In any case, after getting the appropriate
  727. executable onto your VMS disk, rename it to KERMIT.EXE, e.g.:
  728.  
  729.  $ RENAME CKVAKER-VMS62-TGV40.EXE KERMIT.EXE
  730.  
  731. The "labeled file converter" is simple; it comes in a VAX version,
  732. CKVVCVT-VMSnn.{HEX,EXE}, and an Alpha version, CKVACVT-VMSnn.{HEX,EXE}.
  733. Rename it to CKVCVT.EXE so VAX and Alpha users don't have to use different
  734. names for the same program.
  735.  
  736.  
  737. IV - INSTALLING VMS C-KERMIT
  738.  
  739. VMS C-Kermit must be installed on your VMS system by hand.  There is no
  740. VMSINSTAL kit because it would have to include many megabytes of differently-
  741. configured executables to choose from, and many of system-configuration items
  742. discussed above are best done by the system manager manually, in privileged
  743. mode, after some thought and consideration.
  744.  
  745. IMPORTANT:
  746.  
  747. DO NOT INSTALL VMS C-KERMIT AS A PRIVILEGED PROGRAM!  Instead, install it
  748. as a foreign command.
  749.  
  750. To install C-Kermit, follow this procedure:
  751.  
  752.  1. If you have the old Bliss Kermit-32 on your system, rename it to
  753.     KERMIT32.EXE.  If you have a symbol KERMIT defined to run Kermit-32,
  754.     change the symbol name to KERMIT32.
  755.  
  756.  2. Identify the directory where you want to install the C-Kermit program.
  757.     Normally this would be a directory that is unaffected by installation
  758.     of DEC software, such as SYS$TOOLS = SYS$SYSDEVICE[SYSTOOLS].  From now
  759.     on, we will assume you are using SYS$TOOLS:.
  760.  
  761.  3. Copy the desired .EXE file (VAX or Alpha, with the appropriate networking
  762.     support) to that directory, rename it to KERMIT.EXE, and give users
  763.     permission to run it, for example:
  764.  
  765.     $ COPY CKVVKER-VMS55-UCX20.EXE SYS$TOOLS:KERMIT.EXE
  766.     $ SET PROTECTION=(S:RWED,O:RWED,G:RE,W:RE) SYS$TOOLS:KERMIT.EXE
  767.  
  768.     If Kermit is going to be used a lot, you can have it preloaded and
  769.     its pure memory segments shared:
  770.  
  771.     $ INSTALL ADD SYS$TOOLS:KERMIT.EXE/OPEN/HEADER/SHARE
  772.  
  773.  4. Copy the standard CKERMIT.INI file to the same directory:
  774.  
  775.     $ COPY CKERMIT.INI SYS$TOOLS:
  776.     $ SET PROTECTION=(S:RWED,O:RWED,G:RE,W:RE) SYS$TOOLS:CKERMIT.INI
  777.  
  778.  5. Add the following line to SYS$COMMON:[SYSMGR]SYSTARTUP_V5.COM (or
  779.     whatever your system startup file is):
  780.  
  781.     $ DEFINE/SYSTEM CKERMIT_INI SYS$TOOLS:CKERMIT.INI
  782.  
  783.  6. Find your system-wide login DCL command procedure:
  784.  
  785.     $ SHOW LOGICAL SYS$SYLOGIN
  786.     "SYS$SYLOGIN" = "SYS$TOOLS:SYLOGIN.COM" (LNM$SYSTEM_TABLE)
  787.  
  788.     and then add the following line to it:
  789.  
  790.     $ KERMIT :== $SYS$TOOLS:KERMIT
  791.  
  792.     This defines SYS$TOOLS:KERMIT.EXE as a "foreign command".
  793.  
  794.     NOTE: VMS 6.2 and later support automatic creation of foreign
  795.     commands by placing the corresponding .EXE (or .COM) files in any
  796.     directory that is included in the DCL$PATH logical name; e.g.:
  797.  
  798.     $ DEFINE DCL$PATH SYS$DISK:[],DISK1:[TOOLS],SYS$SYSTEM:
  799.  
  800.  7. Install the C-Kermit HELP file in your VMS HELP library.  First delete
  801.     any earlier KERMIT help entry, then install the new one:
  802.  
  803.     $ LIBRARY/HELP/DELETE=KERMIT SYS$HELP:HELPLIB.HLB
  804.     $ LIBRARY/INSERT/HELP SYS$HELP:HELPLIB.HLB CKVKER.HLP
  805.  
  806.  8. Create a publicly accessible directory, such as [KERMIT], in which to make
  807.     other C-Kermit files available to your users:
  808.  
  809.     CKERMIT.KDD
  810.       Sample dialing directory file.
  811.     CKERMIT.KSD
  812.       Sample services directory.
  813.     CKERMIT.KND
  814.       Sample network directory.
  815.     CKEDEMO.KSC
  816.       Macro definitions from "Using C-Kermit".
  817.     CKEVT.INI
  818.       Command file to demonstrate special screen effects from "Using C-Kermit".
  819.     CKCKER.UPD
  820.       A supplement to the book, "Using C-Kermit", describing features added
  821.       since the book was published.
  822.     CKCKER.BWR
  823.       The general C-Kermit beware file.
  824.     CKVKER.BWR
  825.       The VMS-specific C-Kermit beware file.
  826.  
  827. If the Kermit program is not installed as a "foreign command" as in (6) above,
  828. you can still RUN it, but you can't pass command-line arguments to it this
  829. way.  However, you can pass command-line arguments if you invoke it with the
  830. MCR command:
  831.  
  832.   $ mcr kermit -s oofa.txt ; (assumes "kermit.exe" in sys$system)
  833.  
  834. or:
  835.  
  836.   $ mcr disk1:[olga]kermit -s oofa.txt ; (explicit path given)
  837.  
  838.  
  839. V - USING MODEMS
  840.  
  841. If you have a VAX or Alpha with a real serial port (DB-9 or DB-25), you
  842. can use it with a modem.  If your machine has MMJ (assymetrical RJ-45)
  843. modular jack sockets (like a VAXstation 3100), you won't be able to make
  844. very good use of modems since these ports do not support modem signals.
  845.  
  846. Before attempting to use a modem on port (say) TTA0, you (or the system
  847. manager) will need to configure the port as a modem port:
  848.  
  849.  $ SET TERMINAL TTA0 /MODEM /ALTYP /PERM
  850.  
  851. From section 5.2.3.1 of the I/O User's Reference Manual:
  852.  
  853.   Remote terminal connections have a timeout feature for the
  854.   security of dial-up lines. If no channel is assigned to the port
  855.   within 30 seconds, or a port with an assigned channel is not
  856.   allocated, the DTR signal is dropped. Such action prevents an
  857.   unused terminal from tying up a line. However, there are
  858.   configurations (such as a printer connected to a remote line)
  859.   in which the line should not be dropped even though it is not
  860.   being used interactively. To bypass the 30-second timeout,
  861.   set the system generation parameter TTY_DIALTYPE to 4.
  862.   (Note that if TTY_DIALTYPE is equal to 4, all dial-up lines
  863.   will skip the timeout waiting for a channel to be assigned.)y
  864.  
  865. The following is reprinted by permission; references to Kermit-32 are
  866. obsolete.
  867.  
  868.         How to Use a MODEM With Your VMS System
  869.                            Richard B. Gilbert
  870.               Computer Systems Consultant
  871.                76702.1567@CompuServe.Com
  872.  
  873.                          Revised July 30, 1996
  874.  
  875.     Most MODEMs come with factory defaults intended for dialout use with
  876. PCs.  The MODEM is typically set to ignore DTR; e.g., assume that it is always
  877. asserted and to assert CD at all times regardless of the actual state of the
  878. received carrier.  The user is not required to do much, if anything, to get it
  879. to work.  Such a MODEM requires some configuration before it will work
  880. properly, or at all, with a VMS System.
  881.  
  882.     Be sure that the serial port you are using supports MODEM control
  883. signals.  On the DMF32, for example, only ports 0 and 1 can be used with
  884. MODEMS.  These ports on the DMF32 must have DIP switches set to enable MODEM
  885. control signals.  The VAXStation 3100 does NOT support MODEM control! (It is
  886. possible to use a MODEM but the VAXstation cannot detect the loss of the
  887. connection; the next person to dial in could find himself logged in to your
  888. account!)  The MicroVAX 3100 does support MODEM control.  As a general rule,
  889. anything with a DEC Modified Modular Jack (MMJ) connector does not support
  890. full MODEM control; the MMJ has only six pins and nine are required.  Eight
  891. pin RJ45 connectors are sometimes used; e.g. on some models of the DECserver
  892. 700, where a choice is offered as to the signals supported.
  893.  
  894.     Connect the MODEM with a cable that supports MODEM control signals,
  895. such as Digital's BC22E.  The BC22F, connecting all twenty-five pins, is
  896. overkill but will work quite well.  A twenty-five conductor ribbon cable will
  897. also work but a shielded cable is highly recommended in order to comply with
  898. Radio Frequency Interference (RFI) requirements.
  899.  
  900.     Note that while it was possible to "fake it" with VMS V4.x and
  901. earlier, VMS V5 requires that all of the MODEM control signals be connected.
  902. (Pins 2-8, 20 and 22 should be connected straight through; i.e., 2-2, 3-3,
  903. 4-4, ...).  If you are forced to sacrifice one signal, try RI (Ring Indicator)
  904. first.  For reference, here is the standard pinout for the RS-232-C DB-25
  905. connector.
  906.  
  907.     Pin    Description
  908.     1    Protective ground (may be connected to shield at ONE end only)
  909.     2*    Transmitted data (TxD)
  910.     3*    Received data (RxD)
  911.     4*    Request to send (RTS)
  912.     5*    Clear to send (CTS)
  913.     6*    Data set ready (DSR)
  914.     7*    Signal ground
  915.     8*    Carrier detect (CD)
  916.     12    Speed Mode Indicate (or secondary CD)
  917.     15    Synchronous transmit clock
  918.     17    Synchronous receive clock
  919.     19    Speed select (or secondary RTS)
  920.     20*    Data terminal ready (DTR)
  921.     22*    Ring indicator (RI)
  922.     23    Data Signal Rate Select (DSRS)
  923.  
  924.     It should be noted that not all devices connect or support all these
  925. pins and not all those listed are necessary for "full MODEM control".   The
  926. pins marked with an asterisk are generally essential to satisfactory and
  927. secure operation of your modem.
  928.  
  929.     You will need to make some switch settings on your MODEM.  The
  930. following settings are for a U.S. Robotics Courier V32bis FAX Modem.  Other
  931. U.S. Robotics MODEMs use quite similar switch numbers and settings.  Other
  932. manufacturers may use different switch numbers but the functions available are
  933. typical.  See your MODEM's instruction manual for the sordid details.  The
  934. settings marked with an asterisk are critical to the successful use of your
  935. MODEM.  Some settings can also be made from the CPU via the MODEM's AT
  936. command set, in which case the hardware switch settings determine the MODEM's
  937. power on defaults.  The AT commands in parentheses, following the switch
  938. settings, are the commands for a U.S. Robotics Courier HST Dual Standard
  939. MODEM.  Check your manual for the proper commands for your MODEM.
  940.  
  941. * 1.  DTR Normal (controlled by CPU)            (AT&D2&W)
  942.   2.  Verbal result codes (Useful during dialout)    (ATV1)
  943. * 3.  Do not display result codes (Quiet mode)        (ATQ1)
  944.   4.  Echo off line commands (Useful during dialout)    (ATE1)
  945. * 5.  Auto answer (MODEM will answer the phone if DTR is asserted) (ATS0=1)
  946. * 6.  Normal Carrier detect (controlled by MODEM)    (AT&C1&W)
  947.   7.  Display originate result codes only.
  948.   8.  Normal At command set (Must be enabled for auto dial.)
  949.   9.  Online after +++
  950.  10.  Load NVRAM defaults on power up.
  951.  
  952. ************************************************************************
  953.  
  954.     Many users have observed a VMS System dropping DTR (Data Terminal
  955. Ready) while a user is trying to dial in, causing the MODEM to hang up the
  956. phone.  The terminal driver will drop DTR if it sees DSR (Data Set Ready) for
  957. more than thirty seconds, without also seeing CD (Carrier Detect).  If it is
  958. possible to configure the MODEM so that it does not assert DSR until it
  959. asserts CD (AT &S1&W), do so.  Otherwise it will be necessary to use a
  960. modified cable. At the VAX end of the cable, cut the wire leading to pin 6
  961. (DSR) and jumper pin 6 to pin 8 (CD).
  962.  
  963.  
  964.     Commands similar to the following should be placed in your
  965. SYS$MANAGER:SYSTARTUP_VMS.COM (SYSTARTUP_V5.COM for VMS V5.X) file to set up
  966. an asynchronous port for use with a MODEM.  You may want to add some more
  967. qualifiers but this will get you going.
  968. $    SET TERMINAL -
  969.     /PERMANENT -    ! Make settings permanent
  970.     /MODEM -    ! Use MODEM control signals
  971.     /DIALUP    -    ! Gives the DIALUP identifier to user.
  972.     /HANGUP    -    ! Hang up the phone when user logs off
  973.     /AUTOBAUD -    ! Detect the user's baud rate and set it.*
  974.     /ALTYPEAHD -    ! Use the alternate typeahead buffer.  The
  975.             ! alternate typeahead buffer can be made larger
  976.             ! than the regular one.  This is helpful if you
  977.             ! are doing file transfers.  See SYSGEN parameter
  978.             ! TTY_ALTYPAHD.
  979.     /HOSTSYNC -    ! VMS System will send XOFF when its buffer is
  980.             ! nearly full and XON when it is ready for more
  981.             ! input.  See SYSGEN parameter TTY_ALTALARM.
  982.     _TXA0:
  983.  
  984. $    SET SECURITY /CLASS=DEVICE /PROTECTION=W:R    ! VMS V6
  985.             ! Sets device protection to allow non-privileged
  986.             ! users to allocate the device for dialing out.
  987.             ! Otherwise user must own device or hold SYSPRV.
  988. or
  989. $    SET PROTECTION=W:R /DEVICE            ! VMS V5
  990.  
  991.     * Many modern MODEMs are capable of using a fixed DTE rate to talk
  992. to the computer; e.g. if they are set to 19200, they will talk to the
  993. computer at 19200 regardless of what speed they are using to talk to the
  994. remote MODEM.  This feature has performance implications for MODEMs that do
  995. data compression using either CCITT V.41 or MNP.   For such MODEMs, set a
  996. speed that is at least four times the rated DCE speed of the MODEM or the
  997. highest available speed using /SPEED=xxxxx rather than using /AUTOBAUD.  The
  998. MODEM must be set to use the corresponding speed.  The U.S. Robotics Courier
  999. series are set to a particular DTE rate by the most recent AT&W command; the
  1000. rate set is the current speed of the port.  See your MODEM's instructions for
  1001. details.
  1002.  
  1003. ************************************************************************
  1004.  
  1005.     The following commands should probably go in SYS$SYLOGIN, your
  1006. system-wide login command file:
  1007.  
  1008. $! Test for interactive or batch mode
  1009. $!
  1010. $    IF F$MODE() .NES. "INTERACTIVE" THEN GOTO 10$
  1011. $!   Set up device dependant terminal characteristics.  This only works
  1012. $! if the terminal responds to ANSI Device Attributes (DA) control string.
  1013. $! Most DEC terminals (VT1xx, VT2xx, VT3xx, VT4xx, VT5xx, LAxxx) and
  1014. $! compatibles will do so.
  1015. $    IF F$GETDVI("TT", "TT_MODEM") THEN $ SET TERMINAL /INQUIRE
  1016. $ 10$:
  1017. **************************************************************************
  1018.  
  1019.     To set the terminal for temporary dialout use, execute the following
  1020. commands:
  1021. $    ALLOCATE TXA0:    KER$COMM    ! Logical is useful for Kermit-32.
  1022. $    SPEED="''P1'"
  1023. $! Default to 1200 baud.        ! Pick a suitable default value.
  1024. $    IF SPEED .EQ. "" THEN SPEED=1200
  1025. $    SET TERMINAL /NOAUTOBAUD /SPEED='SPEED' KER$COMM:
  1026.  
  1027.     You may need to add a /NOECHO qualifier if your terminal program is too
  1028. stupid to read with no echo.  It is not necessary with SET HOST/DTE, KERMIT,
  1029. XMODEM, or HOST32.
  1030.  
  1031.  
  1032.     To support a MODEM on a DECServer 200:
  1033.  
  1034. 1. Set up the terminal server as follows: (assuming port 8)
  1035.  
  1036. Local> DEFINE PORT 8 ACCESS DYNAMIC AUTOBAUD DISABLED
  1037. Local> DEFINE PORT 8 DSRLOGOUT DISABLED FLOWCONTROL XON
  1038. Local> DEFINE PORT 8 INACTIVITY ENABLED MODEM ENABLED
  1039. Local> DEFINE PORT 8 SIGNAL CHECK ENABLED
  1040. Local> DEFINE PORT 8 SPEED 2400 ALTERNATE SPEED 1200
  1041. Local> DEFINE PORT 8 DIALUP ENABLED
  1042. Local> LOGOUT PORT 8
  1043. Local> DEFINE SERVICE service_name PORT 8 IDENT "string"
  1044. Local> SET SERVICE service_name PORT 8 IDENT "string"
  1045.  
  1046.     Other port characteristics may be defined "to taste".
  1047.  
  1048. 2. Insert the following statements in SYS$STARTUP:LAT$SYSTARTUP.COM
  1049. (SYS$MANAGER:LTLOAD.COM for VMS V5.4 and below):
  1050.  
  1051. CREATE PORT LTA100: /NOLOG
  1052.  
  1053. SET PORT LTA100: /APPLICATION /NODE=server_name /SERVICE=service_name -
  1054.     /NOQUEUE /NOLOG
  1055.  
  1056.     The LTA number is more or less arbitrary but must take into account
  1057. the fact that LAT startup creates a few ports temporarily (starting at
  1058. LTA1) and the number you choose must not conflict.
  1059.  
  1060.     The server_name and service_name must correspond exactly to the
  1061. names used in the DECserver DEFINE SERVER server_name and DEFINE SERVICE
  1062. service_name commands!
  1063.  
  1064. 3. Insert the following statements in SYS$MANAGER:SYSTARTUP_VMS.COM
  1065. (SYS$MANAGER:SYSTARTUP_V5.COM for VMS V5.X):
  1066. $!
  1067. $    @SYS$STARTUP:LAT$STARTUP.COM    ! Start LAT.
  1068. $! Note that SYS$STARTUP:LAT$STARTUP.COM starts LAT and then invokes
  1069. $! LAT$SYSTARTUP.COM to complete the system specific part of the startup.
  1070. $! VMS V5.4 and below would use @SYS$MANAGER:LTLOAD.COM.
  1071. $!
  1072. $! Set up MODEM port on terminal server.  The SET TERMINAL may not
  1073. $! be necessary at all since the DECserver DEFINE commands include equivalents
  1074. $! for everything except /ALTYPEAHD.
  1075. $    SET TERMINAL /PERMANENT /DIALUP /ALTYPEAHD /HOSTSYNC    LTA100:
  1076. $    SET SECURITY /CLASS=DEVICE /PROTECTION=W:R         LTA100:
  1077.  
  1078. 4. Reboot or execute the commands in steps 2 and 3.
  1079.  
  1080.  
  1081. VI - BUILDING VMS C-KERMIT FROM THE SOURCE CODE
  1082.  
  1083. C-Kermit is written in the C programming language.  To build C-Kermit on the
  1084. VAX, you must have VAX C, DEC C, or GNU GCC.  At some sites, the C header
  1085. files are archived in a VMS library and then VMS C-Kermit might not be
  1086. compilable.  If the C compiler (preprocessor) complains about not being able
  1087. to find header files, you'll have to extract them from the library.  A sample
  1088. DCL procedure for this can be found at the end of this file.
  1089.  
  1090. WARNING: When building with GCC on a VMS system that has Multinet installed,
  1091. you must ensure that the GCC TIME.H file is used instead of the Multinet
  1092. TIME.H; otherwise there will be a fatal error in CKVTIO.C at the declaration
  1093. of "tcount", around line 450.  Other warnings appear to be harmless.
  1094.  
  1095. WARNING: DEC C 4.0 has a bug in which the XABALL struct member xab$b_bkz (used
  1096. in CKVFIO.C) is not defined.  DEC gives a simple example -- compiling the
  1097. following code with DEC C using either /DECC and /VAXC:
  1098.  
  1099. #include <rms.h>
  1100. struct XABALL xabDATAall;
  1101. int f() {
  1102.     xabDATAall.xab$b_bkz = 63;
  1103.     return 1;
  1104. }
  1105.  
  1106. Results in:
  1107.  
  1108. %CC-E-NEEDMEMBER, In this statement, "xab$b_bkz" is not a member of
  1109.  "xabDATAall".
  1110.  
  1111. If you find that the above code produces the same problem on your system,
  1112. define BUGFILL7, e.g.:
  1113.  
  1114.   @ckvker.com "" "" "BUGFILL7"
  1115.  
  1116. BEWARE: Certain versions of VAX C can generate incorrect code when a function
  1117. is used before it is declared, and it generates a return value (via a return
  1118. statement) that is not used; other functions might have their entry masks
  1119. (argument lists) corrupted.  If you experience bizarre behavior from a version
  1120. of C-Kermit built with VAX C, try recompiling with /OPT=NOINLINE and /NOOPT,
  1121. or some other reduced optimization level.
  1122.  
  1123. Both VAX C and DEC C are moving targets.  A version of C-Kermit that was built
  1124. successfully with version x.y of the compiler almost always fails to build
  1125. under version x.y+1.  Thus you will find increasing numbers of #ifdefs in the
  1126. code (mostly CKCNET.C and .H and the CKV*.* modules) keyed on explicit C
  1127. compiler version numbers.  Note the form of these carefully -- they have to be
  1128. just right).  Also note that you can't use constructions like:
  1129.  
  1130.   #if __DECC_VER >= 500000000
  1131.  
  1132. ANYWHERE in a portable module because neither "#if" nor relational operators
  1133. in preprocessor statements are portable.
  1134.  
  1135. The number of possible VMS C-Kermit configurations is large, perhaps not even
  1136. countable: VAX vs Alpha, VAXC vs DECC vs GCC, no network support vs Multinet
  1137. vs TCPware vs Wollongong vs UCX vs CMU/Tek, and this release of VMS versus all
  1138. the others.  The kicker is in the releases; for example DEC C 4.0 vs 4.1 vs
  1139. 5.0 vs 5.3 (etc) versus the TCP/IP product's header files, which themselves go
  1140. through all sorts of releases and patches.  We can't guarantee that C-Kermit
  1141. can be successfully built on every combination, but in version 6.0 we are much
  1142. closer to that goal than ever before.
  1143.  
  1144. Before leaving this topic, let's look at how to find out the relevant version
  1145. numbers.  SHOW SYSTEM (among other commands) tells you the VMS version number.
  1146. To find the C version number, try:
  1147.  
  1148.   $ CC /VER
  1149.  
  1150. which works for recent DECC versions, or:
  1151.  
  1152.   $ CC NLA0: /NOOBJ /VERSION
  1153.  
  1154. or (when the above doesn't work):
  1155.  
  1156.   $ CC/LIST=FOO SYS$INPUT
  1157.   ^Z
  1158.  
  1159. and then look at the first line of FOO.LIS.
  1160.  
  1161. The method for finding out the TCP/IP product version number depends on the
  1162. product.  For Multinet:
  1163.  
  1164.   $ MU SHOW /VERSION
  1165.  
  1166. For DEC TCP/IP (UCX) versions 3.0 and later:
  1167.  
  1168.   $ UCX SHOW VERSION
  1169.  
  1170. For earlier releases, or ones where the above command doesn't work, try:
  1171.  
  1172.   $ RUN SYS$SYSTEM:UCX$VERSIONS
  1173.  
  1174. or:
  1175.  
  1176.   $ ANALYZE/IMAGE SYS$SYSTEM:*BGDRIVER
  1177.  
  1178. or:
  1179.  
  1180.   $ ANALYZE/IMAGE SYS$LOADABLE_IMAGES:*BGDRIVER
  1181.  
  1182. For others: (somebody please fill this in)
  1183.  
  1184. Before trying to compile, make sure you've got the disk space and quotas, etc,
  1185. that are needed.  In version 6.0 and later, you'll probably need as much as 8
  1186. or 10 megabytes for all the sources, objects, and binaries.
  1187.  
  1188. The User Authorization File (UAF) parameters of the account in which C-Kermit
  1189. will be built must be set to accomodate the large size of some source modules.
  1190. Recommended values are:
  1191.  
  1192.   PAGE FILE QUOTA:  at least 60000
  1193.   Working set extent:  at least 5012
  1194.  
  1195. To modify: Suppose a user KERMIT is the VMS account from which Kermit is
  1196. maintained.  To set these values, the system manager must do the following:
  1197.  
  1198.   $ set default sys$system
  1199.   $ mcr authorize
  1200.   UAF> modify kermit/pgflquo=60000/wsextent=5012
  1201.   UAF> exit
  1202.  
  1203. If errors such as:
  1204.  
  1205.   %cc-f-text Virtual Memory limits exceeded
  1206.  
  1207. occur during the build procedure, these parameters may need adjustment
  1208. (upwards).
  1209.  
  1210. To build C-Kermit, create a new directory and make it your current directory:
  1211.  
  1212.   $ CREATE/DIR [.KERMIT]
  1213.   $ SET DEFAULT [.KERMIT]
  1214.  
  1215. and put the C-Kermit source files and build procedures there, for example by
  1216. copying them from the distribution tape or cartridge.
  1217.  
  1218. Two build procedures are provided for C-Kermit 6.0 and later; one (CKVOLD.COM)
  1219. for VMS 4.x, the other (CKVKER.COM) for VMS 5.0 and later.  The two are
  1220. equivalent except for syntax, and should work everywhere.  No extra products
  1221. (MAKE, MMS, MMK, etc) are required (but MMS or MMK will be used if present).
  1222. The auxilliary file CKVKER.MMS is used if MMS or MMK are present.  To build
  1223. C-Kermit:
  1224.  
  1225.    $ @CKVKER  (or @CKVOLD)
  1226.  
  1227. Please read the comments at the top of CKVKER.COM itself for further
  1228. instructions and information.
  1229.  
  1230. NOTE: if you get messages like this in the link step:
  1231.  
  1232.   %LINK-I-OPENIN, Error opening SYS$COMMON:[SYSLIB]VAXCRTLG.OLB; as input,
  1233.   %RMS-E-FNF, file not found
  1234.   %LINK-I-OPENIN, Error opening SYS$COMMON:[SYSLIB]VAXCRTL.OLB; as input,
  1235.   %RMS-E-FNF, file not found
  1236.  
  1237. it probably means you have a LNK$LIBRARY symbol defined in your job (or
  1238. system-wide) and the definition is inappropriate.  DEASSIGN it if possible.
  1239. If not, and if the LINK step produced no other error messages, and the
  1240. WERMIT.EXE binary seems to run OK, then you can ignore the error messages.
  1241.  
  1242. If you get huge amounts of warnings like:
  1243.  
  1244.             getsockname(sock,(struct sockaddr *)&l_sa,&slen);
  1245. ............^
  1246. %CC-W-PTRMISMATCH, In this statement, the referenced type of the pointer value"
  1247. &slen" is "int", which is not compatible with "unsigned int".
  1248. at line number 5870 in file DISK$USRG:[FDC.KERMIT]CKCNET.C;20
  1249.  
  1250. this indicates that some essential header file is not being executed, which
  1251. can happen for all sorts of reasons (usually some symbol was defined by some
  1252. other header file that interferes with a subsequent one).  The trick here is
  1253. to get an include-file listing, which is possible with DECC (maybe VAXC too):
  1254.  
  1255.   @ckvker.com "" "" "" /LIST/SHOW=INCLUDE
  1256.  
  1257. and then look through the CK????.LIS file of the offending module.
  1258.  
  1259.   V.1. PROGRAMMING TIPS
  1260.  
  1261. For testing the DEC C version number:
  1262.  
  1263.   #ifdef __DECC_VER
  1264.   #if (__DEC_VER >= 050100000)
  1265.   blah
  1266.   #endif
  1267.   #endif
  1268.  
  1269. Note: the version number is vvuuteeee; vv is the major version (like 5),
  1270. uu is the update number (like the "3" in 5.3), t is a code for field test,
  1271. real release, etc, and eeee is the edit suffix.  This is available only in
  1272. DECC 5.0 and later.  It also has a __VMS_VER...  Note #2: Remember not to
  1273. add a leading zero because that changes it to octal.
  1274.  
  1275.   V.2. VMS TCP/IP NETWORKING SUPPORT FOR C-KERMIT
  1276.  
  1277. VMS C-Kermit is capable of establishing TCP/IP TELNET connections and acting
  1278. as a TELNET program with built-in file transfer, script programming,
  1279. character-set translation, etc, if it is built appropriately.  If you have one
  1280. of the following products installed on your system, complete with libraries
  1281. and header files:
  1282.  
  1283.   1. DEC TCP/IP (UCX)
  1284.   2. TGV MultiNet TCP/IP
  1285.   3. Wollongong WIN/TCP or PathWay
  1286.   4. Process Software TCPware
  1287.   5. CMU-OpenVMS/IP with Mike O'Malley's sockets library
  1288.  
  1289. then you can include TCP/IP capability in your version of VMS C-Kermit.
  1290.  
  1291. The TCP/IP product is selected automatically by the build procedure based on
  1292. the presence or absence of certain files on your system.  To override the
  1293. automatic selection, define the symbol NET_OPTION in one of the following ways
  1294. before running the build procedure:
  1295.  
  1296.   $ NET_OPTION = "NONET"      ! Build with no TCP/IP networking support
  1297.   $ NET_OPTION = "CMU_TCPIP"  ! Build with CMU/Tek TCP/IP networking support
  1298.   $ NET_OPTION = "DEC_TCPIP"  ! Build with DEC TCP/IP (UCX) support
  1299.   $ NET_OPTION = "MULTINET"   ! Build with TGV MultiNet TCP/IP support
  1300.   $ NET_OPTION = "TCPWARE"    ! Build with Process Software TCPware support
  1301.   $ NET_OPTION = "WINTCP"     ! Build with WIN/TCP or PathWay support
  1302.  
  1303. That is, type one of the commands listed above at the DCL prompt (shown above
  1304. as "$") before running the build procedure.  You can also force a "NONET"
  1305. build with the CKVKER.COM "N" command-line option.
  1306.  
  1307. Note: If you are building a version with TCP/IP support, and you have the
  1308. required TCP/IP libraries and header files, but the #include files can't be
  1309. found at compile time, then maybe they were put into a text library, in which
  1310. case you need to unpack the include-file library into separate files using the
  1311. VMS LIBRARY command.
  1312.  
  1313. V.2.1. DEC TCP/IP (UCX)
  1314.  
  1315. If the C-Kermit build procedure does not notice that you have DEC TCP/IP
  1316. installed when you really do, it is likely because the file
  1317. SYS$STARTUP:UCX$STARTUP.COM is read-protected (e.g. because your site
  1318. runs DECinspect).  Turn on READONLY privilege.
  1319.  
  1320. If the DEC TCP/IP version of KERMIT.EXE crashes immediately upon startup
  1321. with a message like:
  1322.  
  1323.   %LIB-E-ACTIMAGE, error activating image
  1324.    R4GRIE$DIA0:[SYS0.SYSCOMMON.][SYSLIB]UCX$IPC_SHR.EXE;1
  1325.   -SYSTEM-F-PRIVINSTALL
  1326.  
  1327. it means the system manager has to install the UCX sharable library:
  1328.  
  1329.   INSTALL ADD SYS$SHARE:UCX$IPC_SHR.EXE
  1330.  
  1331. V.2.2. WOLLONGONG (now Attachmate) TCP/IP
  1332.  
  1333. Wollongong (now Attachmate (now defunct)) support should work for both new
  1334. (PathWay) and older (WIN/TCP) versions, and C-Kermit versions linked under
  1335. older Wollongong versions should still run under the newer version.  But note
  1336. that the pieces of the Wollongong package are now unbundled -- you have to buy
  1337. the runtime, access, API, etc, pieces separately, and (of course) you need the
  1338. API to compile C-Kermit with Wollongong TCP/IP support.
  1339.  
  1340. C-Kermit 7.0 has been verified to build on VMS ... with Pathway 3.1 with a
  1341. few harmless warning messages, but the following change is required to the
  1342. Attachmate-supplied file TWG$TCP:[NETDIST.MISC]DEF.COM to remove the
  1343. definition of DECC$SYSTEM_INCLUDE:
  1344.  
  1345. $ diff twg$tcp:[netdist.misc]def.com
  1346. ************
  1347. File TWG$COMMON:[NETDIST.MISC]DEF.COM;2
  1348.    37   $! define decc$system_include   twg$tcp:[netdist.include],      -
  1349.    38   $!                              twg$tcp:[netdist.include.sys]
  1350.    39   $!
  1351. ******
  1352. File TWG$COMMON:[NETDIST.MISC]DEF.COM;1
  1353.    37   $ define decc$system_include    twg$tcp:[netdist.include],      -
  1354.    38                                   twg$tcp:[netdist.include.sys]
  1355.    39   $!
  1356.  
  1357. You can't build VMS C-Kermit with Wollongong TCP/IP support using GCC due to
  1358. the use of "noshare" in the Wollongong header files.
  1359.  
  1360. Reportedly, when building C-Kermit with WIN/TCP support with older versions
  1361. (5.1 and earlier?) of WIN/TCP, the symbol WIN$PERROR is undefined at link
  1362. time and the build fails.  Workaround: change the one reference to
  1363. win$perror(), which occurs in the contti() function in CKVTIO.C, to be
  1364. simply perror().
  1365.  
  1366.   V.2.3. TGV (now Cisco) MULTINET
  1367.  
  1368. If your VAX has the TGV MultiNet TCP/IP networking product, CKVKER.COM
  1369. automatically builds C-Kermit with MultiNet TCP/IP support included.  However:
  1370.  
  1371. . In older (pre-V3.1) MultiNet installations, the header files might not be
  1372.   installed.  Without these, C-Kermit will not build correctly.  The system
  1373.   manager can add Multinet 3.1 programming support by installing MNETLIB031
  1374.   from the Multinet distribution, if licensed to do so.
  1375.  
  1376. . Anyone building the VMS version with certain versions of TGV MultiNet
  1377.   support under VAX C 3.1 might get an error message about conficting
  1378.   definitions of "time_t".  This is because of a conflict between DEC's
  1379.   <types.h> and MultiNet's <types.h> caused because DEC changed the definition
  1380.   between VAX C 3.0 and 3.1.  Kermit can't do anything about this because
  1381.   CKVTIO.C #includes <time.h>, which itself includes <types.h>.  The warning
  1382.   is not fatal.
  1383.  
  1384.   V.2.4. CMU-OpenVMS/IP
  1385.  
  1386. CMU-OpenVMS/IP (CMUIP), originally CMU/Tek-TCP/IP, is a public domain TCP/IP
  1387. package originally developed at Carnegie-Mellon University (CMU) by Tektronix
  1388. (Tek).  CMUIP was released to the public trust in December 1992 as
  1389. CMU-OpenVMS/IP and is now maintained by a diligent group from around the
  1390. Internet.  Support is provided through the usenet group:
  1391.  
  1392.   vmsnet.networks.tcp-ip.cmu-tek
  1393.  
  1394. BSD socket support for C-Kermit is supported thanks to a new CMU-OpenVMS/IP
  1395. socket library written by Mike O'Malley of Digital Equipment Corporation.  If
  1396. you have this library installed on your VMS system, the build procedure will
  1397. find the file CMUIP_ROOT:[SYSLIB]LIBCMU.OLB and C-Kermit will be built
  1398. automatically with CMU-OpenVMS/IP support unless you define NET_OPTION to say
  1399. otherwise.  The LIBCMU socket library can be found on the kermit.columbia.edu
  1400. anonymous ftp server.
  1401.  
  1402.  
  1403. VII - CASE STUDY: ALPHA SETUP AND TEST RESULTS
  1404.  
  1405.   (by Peter Mossel)
  1406.  
  1407. Model number:  DEC3000/400, a workstation with 64MB of memory.
  1408. Ports used:    OPA1: (a MMJ connector for the alternate operator console)
  1409.                TTA1: (a 25-pin male D-connector on the back)
  1410. Operating System:  OpenVMS V1.0
  1411. Firmware:  V1.1
  1412.  
  1413. Upon power-up, the console displays something like:
  1414. ...
  1415. CPU   OK  KN15-BA V1.1-S11A IO20 sV1.0 DECchip 21064 P2.1
  1416. ...
  1417.  
  1418. Testing setup 1:  OPA1:
  1419.  
  1420. +-------+
  1421. |     MMJ--- DECconnect cable ---MMJ H8571-A--- modem cable to PC
  1422. +-------+                            (passive adapter)
  1423.  
  1424. In words, plug a DECconnect cable with MMJ plugs on both ends in the
  1425. alternate console port on the back of the DEC3000/400.  Make sure S3 is
  1426. in the "up" position.  The workstation screen is now the console (OPA0:)
  1427. and the extra port, OPA1:, is available for connecting a terminal or
  1428. printer.  This MMJ plug is the only MMJ plug on the back of this machine.
  1429.  
  1430. My other host for the test is a DECpc 466, a 66MHz i486 with DOS 5.0 and
  1431. MS-DOS Kermit 3.12.  The 466 has 2 serial ports, both 9-pin.  I attached a
  1432. standard 9-pin to 25-pin modem cable (the ones that came into existence with
  1433. the IBM PC/AT which originally had only a 9-pin serial port) to the serial
  1434. port on the 466.
  1435.  
  1436. Now we must join a 25-pin connector and a MMJ connector.  This is done with a
  1437. passive adapter (H8571-A) which converts the RS423 signalling standard
  1438. (balanced TX+ TX- RX+ RX-, DTR, DSR) to RS-232.  All this is fairly standard
  1439. for DEC sites.  Note that when connecting a modem to an MMJ connector, we have
  1440. only a subset of the required modem signals, so this is not supported via MMJ.
  1441. The other port (TTA1) has full modem control.  Note that the DECconnect cable
  1442. always reverses TX and RX, so it effectively functions as a NULL-modem cable.
  1443.  
  1444. Testing setup 2:  TTA1
  1445.  
  1446. +-------+
  1447. |     25-pin D connector --- NULL modem cable to PC
  1448. +-------+
  1449. Use the (only) 25-pin D-connector on the back.  Now we need a null modem
  1450. cable (see the Kermit book), and, because my PC has a 9-pin serial
  1451. port, I also need a 9-pin to 25-pin modem cable.
  1452.  
  1453. Testing setup 3:  LAT
  1454.  
  1455. Connect the PC with a standard cable to the terminal server, which speaks
  1456. LAT to my DEC3000/400.  The speed can be set up to 19200 baud with the
  1457. terminal server in use.
  1458.  
  1459. Test script for setup 1 and 2:
  1460.  
  1461. On DEC3000:
  1462. $ kermit
  1463. C-Kermit>set line xxx
  1464.    (where xxx is OPA1 or TTA1)
  1465. C-Kermit>set speed 19200
  1466.  
  1467. On the PC
  1468. C:\kermit
  1469. MS-Kermit>set port 1
  1470. MS-Kermit>set speed 19200
  1471. MS-Kermit>server
  1472.  
  1473. On the DEC3000:
  1474. C-Kermit>get test.fil
  1475. C-Kermit>finish
  1476.  
  1477. On the PC
  1478. MS-Kermit>quit
  1479.  
  1480. Test script for setup 3 (LAT):
  1481. On the PC
  1482. C:\kermit
  1483. MS-Kermit>set port 1
  1484. MS-Kermit>set speed 19200
  1485. MS-Kermit>connect
  1486.  
  1487. [ Now log into DEC3000 as host ]
  1488.  
  1489. $ kermit -x
  1490.  
  1491. [ back to the PC ]
  1492.  
  1493. MS-Kermit>get test.fil
  1494. MS-Kermit>bye
  1495.  
  1496. Results:
  1497.  
  1498. In all three cases, the data transfer speed is excellent.  Over 80% of the
  1499. bandwidth of the communication channel is used for the file transfer,
  1500. sometimes even more.  The DEC3000 is loaded with processes (MOTIF, Sybase
  1501. DBMS, NFS clients and servers,...) and heavy network activity (DECnet, LAT,
  1502. TCP/IP but no characters have ever been lost, even when the DBMS fires up.  No
  1503. special SYSGEN parameters, just configured for a normal workstation with
  1504. MOTIF.
  1505.  
  1506. Notes:
  1507.  
  1508. 1.  Device protection
  1509.  
  1510. In a system like this out of the box, the device protection on TTA1 and
  1511. OPA1 does not allow an unprivileged user to use these lines for DIAL-OUT
  1512. from Kermit.  Thus, the system manager must set every time the system is
  1513. rebooted:
  1514.  
  1515.   $ set protection=w:rwlp/device OPA1:
  1516.   $ set protection=w:rwlp/device TTA1:
  1517.  
  1518. Without these special protections, a terminal connected to these ports
  1519. will still be able to login and get the "Username:" prompt.
  1520.  
  1521. 2.  Console device speed
  1522.  
  1523. The Alpha VMS V1.0 cover letter mentions that the command
  1524.  
  1525.   $ set terminal/speed=nnnn/perm/opa1:
  1526.  
  1527. will have no effect on the speed of OPA1.  In practice, there is no problem
  1528. with Kermit file transfers.  The data just get thru fine and file transfers
  1529. are OK.  The release notes also mention that setting the speed of OPA1 can
  1530. be accomplished by setting the console environment variable "tta1_baud" to the
  1531. desired speed.  See the hardware guide on how to do this.  The problem will be
  1532. fixed in a future release.
  1533.  
  1534.  
  1535. VIII - MAKING AND USING VMSINSTAL KITS
  1536.  
  1537. (NOTE: This section is only for future reference, in case it becomes
  1538. practical to distribute VMSINSTAL kits for C-Kermit.  For now, please ignore.)
  1539.  
  1540. (The reason it isn't practical to build VMSINSTAL kits is that they would
  1541. be HUGE -- we have five networking options times two processors (VAX and
  1542. Alpha) times two choices of whether you want to build from the source code
  1543. or accept the included binary, and the resulting kit still would not solve
  1544. the many VMS configuration problems discussed above.)
  1545.  
  1546. After building C-Kermit using one of the procedures outlined above, execute
  1547. the DCL procedure CKVMSI.COM to create a VMSINSTAL kit.  This kit can be
  1548. created either with or without the source code.  In any case, it includes the
  1549. C-Kermit executable program, the C-Kermit help file (for installation in your
  1550. HELP library), plus a sample CKERMIT.INI (C-Kermit initialization) file, and
  1551. release notes.  You may now install C-Kermit using the command:
  1552.  
  1553.   @sys$update:vmsinstal kermit
  1554.  
  1555. It will prompt you for which components you want installed, and where to put
  1556. them.  CKVMSI and CKVKIT were written by Terry Kennedy of Saint Peters College.
  1557.  
  1558. SAMPLE HEADER-FILE EXTRACTION PROCEDURE
  1559.  
  1560. This one is for VAX C, and probably needs a few more files extracted from it
  1561. than are shown below.
  1562.  
  1563. $!
  1564. $! XTRACTHD.COM
  1565. $! By Robert Weiner, Programming PLUS, rweiner@watsun.cc.columbia.edu
  1566. $! FEB-1992
  1567. $! Use this Extract Header command script to extract the VAXC header files
  1568. $! from sys$library:vaxcdef into the current directory inorder to compile
  1569. $! ckermit if you don't have the include files already in sys$library:
  1570. $! You must also modify the CKVKER.COM procedure to include
  1571. $! "CCFLAGS = /INC=([])" for this to work, ie. search current directory too.
  1572. $!
  1573. $ write sys$output "Extracting CKERMIT Include Files into Local Directory..."
  1574. $!
  1575. $lib /log /extract=CTYPE    /output=CTYPE.h        sys$library:vaxcdef.tlb
  1576. $lib /log /extract=DCDEF    /output=DCDEF.h        sys$library:vaxcdef.tlb
  1577. $lib /log /extract=DESCRIP    /output=DESCRIP.h    sys$library:vaxcdef.tlb
  1578. $lib /log /extract=DEVDEF    /output=DEVDEF.h    sys$library:vaxcdef.tlb
  1579. $lib /log /extract=DVIDEF    /output=DVIDEF.h    sys$library:vaxcdef.tlb
  1580. $lib /log /extract=ERRNO    /output=ERRNO.h        sys$library:vaxcdef.tlb
  1581. $lib /log /extract=FILE        /output=FILE.h        sys$library:vaxcdef.tlb
  1582. $lib /log /extract=IN        /output=IN.h        sys$library:vaxcdef.tlb
  1583. $lib /log /extract=INET        /output=INET.h        sys$library:vaxcdef.tlb
  1584. $lib /log /extract=IODEF    /output=IODEF.h        sys$library:vaxcdef.tlb
  1585. $lib /log /extract=JPIDEF    /output=JPIDEF.h    sys$library:vaxcdef.tlb
  1586. $lib /log /extract=LIMITS    /output=LIMITS.h    sys$library:vaxcdef.tlb
  1587. $lib /log /extract=NETDB    /output=NETDB.h        sys$library:vaxcdef.tlb
  1588. $lib /log /extract=RMS        /output=RMS.h        sys$library:vaxcdef.tlb
  1589. $lib /log /extract=SETJMP    /output=SETJMP.h    sys$library:vaxcdef.tlb
  1590. $lib /log /extract=SIGNAL    /output=SIGNAL.h    sys$library:vaxcdef.tlb
  1591. $lib /log /extract=SOCKET    /output=SOCKET.h    sys$library:vaxcdef.tlb
  1592. $lib /log /extract=SSDEF    /output=SSDEF.h        sys$library:vaxcdef.tlb
  1593. $lib /log /extract=STARLET    /output=STARLET.h    sys$library:vaxcdef.tlb
  1594. $lib /log /extract=STAT        /output=STAT.h        sys$library:vaxcdef.tlb
  1595. $lib /log /extract=STDIO    /output=STDIO.h        sys$library:vaxcdef.tlb
  1596. $lib /log /extract=STDLIB    /output=STDLIB.h    sys$library:vaxcdef.tlb
  1597. $lib /log /extract=STRING    /output=STRING.h    sys$library:vaxcdef.tlb
  1598. $lib /log /extract=STSDEF    /output=STSDEF.h    sys$library:vaxcdef.tlb
  1599. $lib /log /extract=SYIDEF    /output=SYIDEF.h    sys$library:vaxcdef.tlb
  1600. $lib /log /extract=TIME        /output=TIME.h        sys$library:vaxcdef.tlb
  1601. $lib /log /extract=TIMEB    /output=TIMEB.h        sys$library:vaxcdef.tlb
  1602. $lib /log /extract=TT2DEF    /output=TT2DEF.h    sys$library:vaxcdef.tlb
  1603. $lib /log /extract=TTDEF    /output=TTDEF.h        sys$library:vaxcdef.tlb
  1604. $lib /log /extract=TYPES    /output=TYPES.h        sys$library:vaxcdef.tlb
  1605. $lib /log /extract=UAIDEF    /output=UAIDEF.h    sys$library:vaxcdef.tlb
  1606. $!
  1607. $! The end
  1608. $!
  1609.  
  1610. (End of file CKVINS.DOC)
  1611.