home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / e / dc.txt < prev    next >
Text File  |  2020-01-01  |  52KB  |  960 lines

  1. EVALUATING RS-232 COMMUNICATION PACKAGES
  2.  
  3.  
  4. Frank da Cruz and Christine Gianone
  5. Columbia University Center for Computing Activities
  6. New York, NY  10027
  7.  
  8.  
  9. In most places where there are computers, nobody questions the need for data
  10. communication.  The question is more likely to be how best to do it.  In
  11. theory networks can do the job, typically PC LANs, perhaps interconnected by
  12. gateways to mainframe networks.  But this arrangement presumes that
  13. equipment was purchased according to some consistent plan, with networking
  14. in mind.  In practice, most organizations have a patchwork history of
  15. computer acquisition, resulting in a hodgepodge of PCs, minis, and
  16. mainframes for which compatible networking options are not available or
  17. affordable.  Often, the only device these systems share in common is the
  18. humble RS-232 asynchronous communication port.  Even when comprehensive
  19. networking solutions exist, the cost of attaching hundreds or thousands of
  20. PCs, at $500-$1500 per PC, to a Token Ring or Ethernet can be daunting.  And
  21. those who want to dial in from home, or dial out to external services, must
  22. still be accommodated.
  23.  
  24. For these reasons, many organizations choose to connect PCs to their
  25. networks through use of RS-232 communication packages like Crosstalk, Blast,
  26. Relay Gold, Smartcomm, VTERM, Kermit, PC-Talk, ProComm, Red Ryder,
  27. HyperACCESS, or ASCII Pro.  Hundreds of these products permeate the
  28. marketplace, and, if selected intelligently, they can fill the gaps in an
  29. organization's network effectively and inexpensively.  The cost for
  30. PC-resident data communication programs typically ranges from $20 to $500
  31. per PC, with some exceptions (some are free, others cost more).  And that
  32. makes these programs more affordable than most PC network connections.
  33.  
  34. Evaluating RS-232 communication packages can be a complicated process.  The
  35. Cost must be weighed carefully against the needs of your organization.
  36. Reviews and surveys of communication packages appear frequently in the
  37. popular computer publications, and they can help.  But surveys consisting
  38. mostly of charts in which, say, 100 popular software packages are compared
  39. on the basis of, say, 20 arbitrarily chosen features, are necessarily
  40. superficial.  And many articles concentrate on frills and conveniences while
  41. giving short shrift to central issues like connection establishment and
  42. maintenance, terminal emulation, and file transfer.  In this article we
  43. attempt to present the features of RS-232 communication packages in a way
  44. that will help you to assess their relative importance for yourself or your
  45. organization.
  46.  
  47. {h1} WHAT IS AN RS-232 COMMUNICATION PACKAGE?
  48.  
  49. RS-232 communication packages are software programs that run on personal
  50. computers like the IBM PC, IBM clone, Apple II, or Macintosh, and
  51. communicate asynchronously with remote computers through RS-232-C serial
  52. ports, either directly or through modems.  This distinguishes them from
  53. specialized products that emulate synchronous terminals in IBM mainframe,
  54. Wang, or similar environments, for which special adapters (like an Irma
  55. board) and connections (like coax) are required, and which won't be
  56. discussed here.
  57.  
  58. There are two fundamental aspects to any PC communication package.  One is
  59. terminal emulation, which allows you to connect your PC to a mini or
  60. mainframe as a terminal in order to conduct a timesharing session or to
  61. access an application on a central, shared system.  The other is data
  62. transfer, which lets you exchange information between your PC and a mini or
  63. mainframe (or another PC).  For terminal emulation, PC-resident software is
  64. the only requirement.  For error-free data transfer, however, a companion
  65. program is required on the other computer.  The cost for commercial mini- or
  66. mainframe-based communication programs runs much higher than PC versions,
  67. typically ranging from $1000 to $100,000 (again, with exceptions).
  68.  
  69. {h1} USER INTERFACE
  70.  
  71. The most immediately striking aspect of any program is the "user interface":
  72. the prompts, commands, menus, function keys, etc, with which you make your
  73. wishes known to the program, and the displays with which it makes the
  74. results known to you.
  75.  
  76. There are many styles of user interface: command line, interactive prompt
  77. and command, menus and arrow keys, mice and windows.  The fundamental
  78. tradeoff is ease of learning versus ease of use.  Ease of learning is
  79. important if many people will be using the package infrequently or if there
  80. is rapid personnel turnover, so that relatively little time need be "wasted"
  81. in learning and training.  A user interface designed for ease of learning
  82. presents you with all the choices in menus.  The penalty is that you are
  83. always presented with menus for everything, which slows you down needlessly
  84. once you have become expert.  At the other extreme are programs that favor
  85. the expert, providing only terse and cryptic commands, sometimes with no way
  86. for a novice to get help at all, short of reading the manual.  A compromise,
  87. "menu on demand", lets the expert issue rapid, terse commands, while still
  88. allowing the novice to see a menu at any point by entering a special help
  89. key.
  90.  
  91. There is an oft-neglected aspect of the user interface that falls into the
  92. "ease of use" category: can the package be used by people with disabilities
  93. like motor impairment, blindess, or deafness?  If you can depress only a
  94. single key at a time, how can you enter complicated Ctrl-Alt-Shift key
  95. combinations?  If your PC is connected to an ASCII-oriented speaking device
  96. or a Braille terminal, how can you decipher multicolor animated graphics
  97. screens?  If you can't hear, how do you know when the package is beeping or
  98. whistling at you to signal some important event?  Often, the fancier the
  99. user interface, the less it lends itself to use by the disabled.
  100.  
  101. Another item of minor importance, but whose absence can be a nuisance, is
  102. the ability to access system functions without actually leaving the program.
  103. If you want to change directories, list files, display a file, or delete a
  104. file, you should not have to exit the communication program, and then
  105. restart it afterwards.  This can be time consuming, especially on
  106. floppy-disk-based systems, and even more so when settings -- or the
  107. connection itself -- must be reestablished.
  108.  
  109. Commercial communication packages tend to place great emphasis on the
  110. appearance and style of the user interface, primarily for marketing reasons.
  111. But for most people, the user interface should not be a key factor in
  112. evaluating a product.  It only lets you specify the real work to be done,
  113. and it should take up a relatively small proportion of the total time you
  114. spend with the package.  Ultimately, it is much more important to know
  115. whether the product can perform the required tasks, and how well.
  116.  
  117. {h1} CONNECTION ESTABLISHMENT AND MAINTENANCE
  118.  
  119. Perhaps the most important aspect of any communication package its set of
  120. mechanisms for establishing a connection, matching communication parameters
  121. to the communication medium and the system on the other end, monitoring the
  122. connection once established, and breaking the connection.
  123.  
  124. {h2} COMMUNICATION PARAMETER SETTINGS
  125.  
  126. Any communication program should allow you control over communication
  127. parameters like bits per second, parity, duplex, flow control, and the
  128. number of data, start and stop bits per character.  Each of these parameters
  129. is important, and the lack of any particular option may prevent you from
  130. communicating satisfactorily with another computer.  Before you select a
  131. communication package, you should be sure it supports all the communication
  132. parameters and settings required by all the computers you need to
  133. communicate with.
  134.  
  135. For example, most DEC minis and mainframes employ XON/XOFF full duplex flow
  136. control to prevent data overruns; if your PC communication package does not
  137. support XON/XOFF, then data transferred between it and the DEC system could
  138. be lost.  IBM mainframe ASCII TTY linemode connections, on the other hand,
  139. are half duplex and exercise a line turnaround handshake discipline: if you
  140. transmit to the IBM mainframe before it has given you permission (by sending
  141. a special "handshake" character, such as Control-Q), it will not accept your
  142. data.  Certain popular mainframes and minis, as well as public data networks
  143. like Telenet and Tymnet, use even, odd, or mark parity, and will not
  144. recognize your characters unless the right parity is applied.  And if your
  145. package cannot distinguish parity bits from data bits, the wrong characters
  146. will be displayed on your screen.  Table 1 shows typical RS-232
  147. communication parameters for various systems.
  148.  
  149. ______________________________________________________________________________
  150.  
  151. Computer         Front End   Duplex   Flow Control     Parity    Terminal
  152. ---------------  ---------   ------   ------------     ------    --------
  153. Data General MV   None        Full      XON/XOFF        None      Dasher
  154. DEC PDP-11        None        Full      XON/XOFF        None      VT52,VT100
  155. DEC VAX           None        Full      XON/XOFF        None      VT52,VT100
  156. DECSYSTEM-20     PDP-11       Full      XON/XOFF        Even      VT52,VT100
  157. Honeywell DPS8   DN335        Half    XON Handshake     None      VIP7300,7800
  158. HP-1000           None        Full      ENQ/ACK         None      HP262x
  159. HP-3000           None        Half    XON Handshake     None      HP262x
  160. IBM 370 Series   3705 TTY     Half    XON Handshake     Mark      TTY
  161. IBM 370 Series   7171 P.E.    Full      XON/XOFF        Even      Various*
  162. Prime minis       None        Full      XON/XOFF        Mark      TTY, PS300 
  163.  
  164.        P.E. = 3270 Protocol Emulator, TTY = ASCII Linemode Connection.
  165.    *Delivered with support for 13 popular terminals, configurable for more.
  166.  
  167.                   Table 1: Typical Communication Parameters
  168. ______________________________________________________________________________
  169.  
  170. Some communication packages support only a limited range of transmission
  171. speeds.  For instance, they may be designed to work only for dialup
  172. connections at speeds up to 1200 or 2400 bits per second (bps).  If you
  173. should ever need to connect two computers directly, you should not be
  174. artificially limited to such low speeds.  Even if dialups are the only
  175. connections you will ever make, you should be aware that new modems are
  176. appearing on the market that operate at speeds in excess of 9600 bps on
  177. ordinary voice-grade phone connections.  For these reasons, any
  178. communication package should be able to operate at 9600 bps or higher.  9600
  179. bps is the highest speed supported by most minis, mainframes, and front ends
  180. today (some support 19,200 bps).  Micros like the IBM PC/AT and the
  181. Macintosh, however, can drive their RS-232 ports to speeds of 38,400 bps or
  182. higher, and two such PCs connected back to back can actually transfer data
  183. at these speeds.  But the higher the speed, the more important it is to have
  184. an effective flow control mechanism supported by the systems on each of the
  185. connection.
  186.  
  187. {h2} MODEM CONTROL
  188.  
  189. Unless your computers are hardwired together with dedicated lines, you
  190. probably use asynchronous dialup modems to establish connections with other
  191. systems.  Modems communicate special control information with the PC via
  192. RS-232 modem signals like DTR, DSR, and CD (see Table 2).  Most
  193. communication packages can control and monitor these signals to detect when
  194. the connection is broken, or to break the connection and hang up the phone.
  195. If you use your package interactively, modem control is largely superfluous
  196. because you will notice when the connection is broken, or you will hang up
  197. the phone yourself when you are done with it.  For unattended operation, on
  198. the other hand, modem control is important in avoiding the excessive phone
  199. bills that could result when the communication package does not notice that
  200. connections break and leaves the phone off hook all night.
  201.  
  202. ______________________________________________________________________________
  203.  
  204.   FG   Frame Ground
  205.   TD   Transmitted Data, from PC to modem
  206.   RD   Received Data, from modem to PC
  207.   RTS  Request To Send, from PC to modem, used with half duplex modems
  208.   CTS  Clear To Send, from modem to PC, ditto
  209.   SG   Signal Ground
  210.   DSR  Data Set Ready, indicates modem is in data transmission mode
  211.   CD   Carrier Detect, indicates that modem is connected to other modem
  212.   DTR  Data Terminal Ready, tells modem that PC is ready to communicate
  213.   RI   Ring Indicator, tells PC that the phone is ringing
  214.  
  215.                  Table 2: RS-232-C Asynchronous Modem Signals
  216. ______________________________________________________________________________
  217.  
  218. Modems may be either external or internal.  External modems are controlled
  219. in a consistent way according to RS-232-C, and rarely pose a problem to
  220. communications software.  Although generally more expensive, external modems
  221. are interchangeable between different computers.  Internal modems, on the
  222. other hand, are built specifically for certain computers, and sometimes
  223. require special handling by the software.  A particular software package
  224. will not necessarily operate correctly with a specific internal modem (check
  225. with the software vendor!).  And, of course, two modems that are to
  226. communicate must support the same modulation techniques and speeds.
  227.  
  228. Some packages are designed to be used only with modems, and don't work
  229. properly when two computers are connected directly by a cable, unless
  230. certain modem signals are "faked" by cross-connections or jumper wires
  231. within the cable connectors.  Such a fakeout cable is called a "null modem"
  232. or "modem eliminator" (Figure 1), readily available from any computer supply
  233. house, and also available as an adapter that you can connect to your modem
  234. cable.  But different systems may require different signals connected in
  235. different ways, so be prepared for some experimentation (a breakout box will
  236. help).  Your communication software package can relieve you of the tinkering
  237. if it can be configured to ignore modem signals altogether when you connect
  238. two computers directly.
  239.  
  240. ______________________________________________________________________________
  241.  
  242.            True Null Modem                  Minimal Null Modem
  243.             (8 wires)                         (4 wires)
  244.  
  245.          FG ----------- FG                 FG ----------- FG
  246.  
  247.          TD ----\ /---- TD                 TD ----\ /---- TD
  248.              X                                 X
  249.          RD ----/ \---- RD                 RD ----/ \---- RD
  250.  
  251.         RTS ----\ /---- RTS               RTS -+       +- RTS
  252.              X                             |       |
  253.         CTS ----/ \---- CTS               CTS -+       +- CTS
  254.  
  255.         DSR -+       +- DSR               DSR -+       +- DSR
  256.          |       |                         |       |
  257.          CD -+--\ /--+- CD                CD  -+       +- CD
  258.              X                             |       |
  259.         DTR -+--/ \--+- DTR               DTR -+       +- DTR
  260.          |       |                         |       |
  261.          RI -+       +- RI                 RI -+       +- RI
  262.  
  263.          SG ----------- SG                 SG ----------- SG
  264.  
  265.                             Figure 1: Null Modems
  266. ______________________________________________________________________________
  267.  
  268.  
  269. {h2} DIALER CONTROL
  270.  
  271. Many PCs are connected to the outside world only by telephone.  "Smart
  272. modems", like those manufactured by Hayes, are able to dial the phone for
  273. you if they receive commands in the right format from the PC.  This means
  274. that your communication package must understand the dialing language of the
  275. modem.  Although the Hayes "AT" language has become a de-facto standard, not
  276. all autodial modems conform to it (prominent counterexamples include DEC
  277. DF-series modems, and selected models from Racal-Vadic, US Robotics, and
  278. Ventel).  Be sure your modem's dialing language is supported by your
  279. communication package.
  280.  
  281. Dialing software simplifies connection establishment, hiding the details of
  282. the dialing language from you.  You tell the program what number to call,
  283. and let the software handle the details.  Some packages go a step further
  284. and include a phone directory so that you don't even have to remember phone
  285. numbers, just the names of the places you want to call.
  286.  
  287. Dialer control and phone directories fall into the frill category for most
  288. users.  It's not much more trouble to type "ATDT7654321" than it is to type
  289. "dial fred".  For unattended operation, however, automatic dialing is an
  290. essential feature.  If a dial command is lacking, then the same function can
  291. be performed by a script, described below.
  292.  
  293. {h2} DEBUGGING COMMUNICATION PARAMETERS
  294.  
  295. Often, we can only guess what the right combination of speed, stop bits,
  296. parity bits, data bits, duplex, and flow control might be for a particular
  297. connection.  What if we guess wrong?  What tools does the communication
  298. package give us to pin down the offending parameters?
  299.  
  300. Obviously, if the package lets us set these parameters independently, we can
  301. vary them until the connection works, but the combinations could be endless.
  302. Your communication package should include debugging tools to reduce the
  303. guesswork, like special display or logging of received characters,
  304. preferably including their 8-bit numeric values.  If examination of the log
  305. reveals a byte with a numeric value of 193 (= 11000001 binary) where you
  306. would expect an ASCII "A" (= 01000001 binary), then you probably should be
  307. looking for 7 data bits with odd or mark parity rather than 8 data bits with
  308. no parity.
  309.  
  310. A good communication package will also include a troubleshooting guide, like
  311. the one in Table 3, in which you can look up symptoms and find the
  312. corresponding diagnoses and prescriptions.
  313.  
  314. ______________________________________________________________________________
  315.  
  316.     SYMPTOM                           POSSIBLE CAUSE      CURE
  317.  
  318.     Blank, dark screen.               PC turned off.      Turn on PC.
  319.  
  320.     Total garbage on screen.          Wrong speed.        Try another speed.
  321.  
  322.     Spurts of garbage on screen.      Noise.              Hang up and redial.
  323.  
  324.     Uniform mixture of good and       Parity.             Select a different
  325.     bad characters on screen.                             parity.
  326.  
  327.     Typed characters appear twice.    Duplex.             Select full duplex.
  328.  
  329.     Typed characters don't appear.    Duplex.             Select half duplex.
  330.  
  331.     Random gaps in screen text.       No flow control.    Use flow control,
  332.                                                           or a slower speed.
  333.  
  334.              Table 3: Sample Entries from a Troubleshooting Guide
  335. ______________________________________________________________________________
  336.  
  337. {h2} SAVING COMMUNICATION PARAMETERS
  338.  
  339. Once you have discovered the proper settings for communicating with a
  340. particular machine, you will want to have some way of saving them.  To
  341. alleviate the tedium of setting five or ten communication parameters each
  342. time you connect to a given system, the package should allow settings to be
  343. collected together into "configurations" which may be saved under mnemonic
  344. names.
  345.  
  346. Some packages are delivered with a set of configurations for popular dialup
  347. services like Dow-Jones, Compuserve, MCI Mail, The Source, etc.  These
  348. built-in configurations shield you from having to know anything about data
  349. communication parameters.  But when you must establish a connection to a
  350. system the package doesn't know about -- like from your PC at home to the
  351. mainframe at work -- you should be able to manipulate the communication
  352. settings yourself and save them for future use.  Once you've determined the
  353. appropriate settings for, say, your company's DEC VAX, IBM 3090, Harris 800,
  354. plus your local Telenet PAD, you only need mention the associated
  355. configuration name to set all the corresponding parameters at once.
  356.  
  357. {h2} SCRIPT LANGUAGE, UNATTENDED OPERATION
  358.  
  359. Just as a communication package may remember your communication settings or
  360. phone numbers for you, it can also allow repetitive interactive tasks, like
  361. login sequences, to be automated by means of "scripts".  Scripts are little
  362. "programs" that look for specific outputs from the remote computer and
  363. provide appropriate responses.  When the package, or the underlying system,
  364. allows a script to be executed at a predesignated time, then it is possible
  365. to carry on a canned dialog with no human operator present.  For instance,
  366. you might program your PC to "wake up" at midnight, set the proper
  367. communication parameters and dial up your office mini, log in, deposit the
  368. day's transactions, fetch and print the day's mail, log out, and hang up.
  369. Script languages vary from the primitive and cryptic to full-blown
  370. programming languages complete with variables and conditional branching.
  371. Figure 2 shows a simple script for dialing a Hayes modem to establish a
  372. connection to a Unix system and then logging in.  It illustrates how a
  373. script can be used in place of built-in dialer control.
  374.  
  375. ______________________________________________________________________________
  376.  
  377.     set speed 1200                   Bits per second
  378.     set parity none                  Parity
  379.     output AT\13                     Wake up the modem
  380.     input OK                         Look for its "OK"
  381.     output ATD7654321\13             Give modem's dialing command
  382.     input CONNECT                    Look for desired response
  383.     pause 1                          Wait a second
  384.     output \13                       Send a carriage return
  385.     input login:                     Look for login prompt
  386.     output chris\13                  Send user ID, followed by carriage return
  387.     input Password:                  Look for password prompt
  388.     echo Connecting to Unix System...
  389.     echo Please type your password:
  390.     connect                          Let the user take over
  391.  
  392.                       Figure 2: Script Language Example
  393.  
  394. ------------------------------------------------------------------------------
  395.  
  396. The "output" commands send the indicated text strings to the Unix system
  397. ("\13" is a code for carriage return), and the "input" commands search the
  398. incoming data for the indicated strings.  If any of the input commands fail,
  399. the script is automatically terminated.  This is an important feature of a
  400. script language.  Suppose, for instance, you have a nightly script which
  401. sends your day's work to a mainframe and then deletes it from the PC's hard
  402. disk.  If the data could not be successfully transmitted, then you certainly
  403. don't want the script to forge ahead stubbornly and destroy all your work.
  404.  
  405. Scripts are essential for unattended operation, and they are also useful in
  406. setting up procedures for relatively unskilled operators such as data entry
  407. clerks.  For the typical interactive user, however, scripts are a minor
  408. convenience rather than a necessity.
  409.  
  410. {h1} TERMINAL EMULATION
  411.  
  412. The PC has increasingly replaced the terminal in many organizations.  In
  413. addition to its other capabilities, a properly programmed PC can also act
  414. like ("emulate") a terminal, so that you can use it to conduct a dialog with
  415. a remote computer.  Your keystrokes are sent out the communication port, and
  416. characters that arrive at the port are displayed on the screen.  On half
  417. duplex, local echo connections, your keystrokes are also displayed on the
  418. screen.  On full duplex connections, terminal emulation can be a tricky
  419. business because characters may arrive at the port at the same time that you
  420. are typing; communication programs vary in their ability to handle both
  421. events at once, especially at higher speeds.
  422.  
  423. It should be stressed that terminal emulation does NOT provide any sort of
  424. automatic error control, any more than a real terminal would.  Bare
  425. characters are sent back and forth with absolutely no error recovery
  426. mechanism.  If a package claims to supply error-checking data transfer, you
  427. should understand that this claim applies to its file transfer functions and
  428. not to its terminal emulator.  A noisy telephone line would probably leave
  429. garbage on your screen during terminal emulation even though files could be
  430. transferred successfully.
  431.  
  432. In addition to sending and displaying characters, a terminal emulator also
  433. attempts to imitate the repertoire of special effects of some particular
  434. real ASCII video display terminal, such as the DEC VT100 series, the IBM
  435. 3101, the Televideo 920, the ADM3A, etc.  This means that the program
  436. responds to screen control sequences sent by the host just as the real
  437. terminal would.  For example, the ASCII sequence "ESC [ 5 ; 7 H" sent to a
  438. DEC VT100 positions the cursor at row 5, column 7; "ESC [ 0 J" clears the
  439. screen, and so a PC programmed to emulate a VT100 would understand the same
  440. sequences and perform the same actions.  When emulating a terminal, the
  441. package should also provide some mapping between the terminal's function
  442. keys and the PC's, so that they transmit the same sequences.  If the VT100
  443. PF1 key sends "ESC O P", then the IBM PC's F1 key might be programmed to
  444. send the same sequence.
  445.  
  446. Today's video display terminals possess a formidable array of features for
  447. tabbing, highlighting, partitioning the screen, erasing and inserting text,
  448. positioning the cursor, drawing figures, changing colors, switching
  449. character sets, activating printers, etc, all controlled by host-transmitted
  450. escape sequences.  A package may emulate such a terminal completely, or it
  451. may emulate a "subset" of its functions.  Some terminals have features that
  452. cannot be emulated by certain PCs.  For example, the DEC VT100 allows
  453. switching between 80- and 132-column modes, but an IBM PC can only display
  454. 80 columns.  To get 132 columns on a PC, a special board may be needed.
  455. Another example is the VT100's "smooth scrolling" feature, which allows a
  456. file to glide slowly along the screen -- the DEC Rainbow can do this, while
  457. the IBM PC cannot.
  458.  
  459. Emulation should be complete enough to allow you to access any desired
  460. software on the host which expects to control the appearance of the
  461. terminal's screen; full-screen text editors like EDT on VAX/VMS or GNU EMACS
  462. on a UNIX system are good tests.  Another is IBM 3270 protocol emulation as
  463. performed by the IBM 7171 or other protocol converter.  If emulation is not
  464. complete, you will see fragmented and jumbled screens, characters or lines
  465. overwriting each other, mysterious gaps and transpositions.
  466.  
  467. Terminal emulation is a very important function for people who engage in a
  468. lot of interactive dialog with a remote system, especially when screen
  469. control is involved.  In this case, it is essential that the communication
  470. package be capable of emulating a terminal that the remote system supports,
  471. such as a DEC VT100 or -200 series with a DEC VAX/VMS system, a Data General
  472. Dasher with DG minis, etc. (see Table 1).  Terminal emulation is less
  473. important for brief or non-interactive encounters, such as occasional
  474. sessions primarily for file transfer.
  475.  
  476. {h2} KEY REDEFINITION AND CHARACTER TRANSLATION
  477.  
  478. Since your PC keyboard may have a different layout than the emulated
  479. terminal, you may want to "move" the misplaced keys to their familiar
  480. locations (no, you can't use pliers for this).  For instance, the Escape
  481. (ESC) key (important to much host-resident software) is notoriously mobile,
  482. appearing in many different locations even on PCs from the same maker (IBM
  483. and DEC spring to mind).  If you're used to finding ESC immediately left of
  484. the "1", but your PC has "`" (accent grave) in that position, you could
  485. redefine "`" to transmit ESC (and vice versa).  Similarly for function keys:
  486. the VT100 PF keys are on the right, whereas the IBM PC's F keys are on the
  487. left; some VT100 users may find it more convenient to assign the PF keys to
  488. the PC's numeric pad.
  489.  
  490. A package might also allow you to assign any arbitrary character string to a
  491. key, so that you could transmit commonly typed items like your name or login
  492. sequence with a single keystroke.  Such many-to-one assignments are called
  493. "keyboard macros", and there are limits to the number of characters which
  494. may be represented by a single key.
  495.  
  496. Key redefinition is important if you switch frequently among terminals and
  497. PCs with different keyboard layouts; it means you don't have to retrain your
  498. fingers each time -- a blessing for touch typists.  It is also helpful when
  499. switching the same PC between different hosts.  If you are used to typing
  500. the Backspace key to erase a character, but one host uses ASCII Rubout for
  501. this function while another uses Control-H, you can assign the suitable
  502. character to the Backspace key.
  503.  
  504. Like communication settings, key definitions might take you some time and
  505. experimentation to perfect.  Once you have configured your keyboard 
  506. satisfactorily, you should be able to save your definitions for future use.
  507.  
  508. {h2} CHARACTER SETS
  509.  
  510. The ability to handle European and non-Roman character sets (keyboard input
  511. as well as screen output) is important for those who deal in languages other
  512. than English.  It is common practice in Germany and Scandanavia, for
  513. instance, to assign umlaut, slashed, or circled vowels to the ASCII bracket
  514. positions.  PCs and host computers must agree upon these conventions in
  515. order for characters to be displayed as intended, rather than in
  516. Anglo-American ASCII.  Translation of outbound and arriving characters is
  517. therefore an important function of the communication package.  To be totally
  518. general, the package should not be restricted to 7-bit ASCII, but should
  519. allow for 8-bit international character sets, in line with ISO
  520. Recommendations 2022, 6937, et al.
  521.  
  522. {h2} TEXT SCREEN MEMORY
  523.  
  524. A special advantage of emulating a terminal on a PC is that the PC may
  525. surpass the capabilities of the terminal.  The PC's memory may be used to
  526. hold hundreds of lines that have scrolled off the top for later recall.
  527. Current or previous screens may be dumped to a disk file or printer at the
  528. touch of a button.
  529.  
  530. Screen print, dump, and rollback fall into the convenience category, and yet
  531. once you've become used to them, you wonder how you ever lived (or at least,
  532. worked) without them.  How many times has some important message scrolled
  533. off your screen before you could read it?  How many times have you typed
  534. hundreds of lines of text into a computer that crashes before you could save
  535. your work?
  536.  
  537. {h2} GRAPHICS
  538.  
  539. If your PC has a color monitor, your communication program should be able to
  540. set the fore- and background text screen colors.  A well-chosen color scheme
  541. can reduce "operator fatigue" or, conversely, can jolt you awake during the
  542. less exciting hours of your day.
  543.  
  544. In order to access graphics-oriented applications on your mainframe or mini
  545. such as SAS Graph, SPSS Graphics, Plot 10, TELL-A-GRAF, or various CAD
  546. packages (not to mention certain dialup shopping services), the
  547. communication package must emulate a graphics terminal or standard known to
  548. the application, such as Tektronix 4010, 4014 or other model, DEC ReGIS,
  549. HPGL, GKS, GDDM, NAPLPS, etc.  Graphics terminal emulation is only found in
  550. a few communication packages, usually as an extra-cost item, and for certain
  551. PCs (like IBM) a special monitor and graphics board are also required.
  552.  
  553. In recent years, graphics tend to be done directly on the PC by such
  554. packages as Lotus, Macpaint, etc.  It is normally not possible to connect
  555. one PC to another in order to access the remote PC's graphics applications,
  556. though certain highly specialized packages do allow this.  You cannot expect
  557. to run Crosstalk from PC A to PC B, and expect Lotus on PC B to put a color
  558. pie chart on PC A's screen.  More commonly, the graphics package exists on
  559. both PCs and their data files are moved from one computer to another using a
  560. file transfer protocol built into the communication package.
  561.  
  562. {h1} FILE TRANSFER
  563.  
  564. "...transfers your data over phone lines at the speed of light!"  was a
  565. claim that once appeared in an advertisement for a communication package.
  566. While it's true that electricity travels through wires at near light speed,
  567. it is not (yet) true that one electron is equivalent to one bit of data.  In
  568. fact, at the most common speed used for dialup data communication, 1200 bits
  569. per second, a single bit is pretty big -- about 150 miles long!  A character
  570. (generally represented in transmission by 10 bits) is 1500 miles long; two
  571. characters, like "OK", would span the American continent.
  572.  
  573. Spurious advertising claims notwithstanding, transmission speed is a
  574. technological issue, but data transfer is a software issue:  How to make
  575. effective use of the transmission medium?  How to smooth over the
  576. differences between computers?
  577.  
  578. There are also several specific areas to watch out for.  Can binary files be
  579. transferred?  Can text file formats be converted to useful form between
  580. unlike systems?  Can a group of files be sent in a single operation?  Can
  581. filename collisions be avoided?  Can a file transfer be cleanly interrupted?
  582.  
  583. {h2} ASCII VS ERROR-CHECKED PROTOCOLS
  584.  
  585. Communication packages offer two basic types of data transfer: "raw" and
  586. error-checked.  The most common "raw" method is usually billed as "ASCII
  587. protocol".  This means that the data is sent as-is, as ASCII characters,
  588. from one computer's communication port to the other.  The advantage is
  589. simplicity.  No special software need be resident on the remote computer,
  590. beyond its text editor, or a "type" or "copy" command.  The disadvantages,
  591. however, explain why error-checked protocols have evolved, and are worth
  592. noting.  The data sent using the ASCII protocol will be corrupted if there
  593. is noise on the communication line.  Data will be lost if the receiving
  594. computer can't keep up with the sender.  Binary (non-textual) files
  595. generally cannot be transferred this way since many computers will ignore
  596. the "parity bit", or act upon control characters rather than accept them as
  597. data: Control-C, Control-S, and Control-Z are frequent culprits.  And
  598. finally, this method works for only one file at a time.
  599.  
  600. A refinement of ASCII protocol incorporates XON/XOFF or some other flow
  601. control method, to reduce the chances of data loss.  In this case, both
  602. computers must support the same flow control method, but corruption of the
  603. data (including the flow control signals themselves) remains a problem, as
  604. does file delimitation and the restriction on binary files.
  605.  
  606. If you want reliable, correct, and complete transmission of files between
  607. computers, then you can't trust the job to ASCII or XON/XOFF "protocol".
  608. You'll need a communications package that includes a true error-correcting
  609. file transfer protocol.  Error-checked data transfer requires cooperating
  610. programs on each end of the connection to exchange messages, called packets,
  611. according to agreed upon formats and rules, similar to how we behave on the
  612. telephone: I dial, your phone rings, you pick up and say hello, I identify
  613. myself, we take turns talking and if I didn't understand what you said then
  614. I ask you to repeat (and vice versa), then we say goodbye, and then we hang
  615. up.  And (an important point) we conduct the conversation in the same
  616. language.  A file transfer protocol operates similarly: the two processes
  617. "connect" with each other, identify the files that are being transferred,
  618. request retransmission of lost or damaged packets, identify the end of the
  619. file, and then disengage from each other.
  620.  
  621. By the way, the fact that many newer modems provide error correction does
  622. not eliminate the need for file transfer software.  An error-free data
  623. stream from modem to modem does not guarantee correct data from computer to
  624. computer.  Issues of end-to-end flow control and error correction, file
  625. delimitation, and format conversion must still be addressed within the
  626. computers themselves.
  627.  
  628. {h2} XMODEM AND KERMIT:
  629.  
  630. Two well known error-checking file transfer protocols are Xmodem and Kermit.
  631. Many commercial packages include one or both of these protocols (sometimes
  632. alongside their own private, proprietary protocols), but there are also
  633. hundreds of public domain or freely sharable Kermit or Xmodem programs.  In
  634. fact, the major advantage of Xmodem and Kermit is that they are ubiquitous.
  635. The protocol specifications are open and public, and large bodies of Kermit
  636. and Xmodem software are available.  The cost to a large organization for
  637. these programs is minimal, compared with the per-CPU licensing fees required
  638. for commercial packages.  Furthermore, chances are greater that a Kermit or
  639. Xmodem program will exist for any given computer.
  640.  
  641. In the case of Kermit programs, source code is included, which encourages
  642. their adaptation to a wide range of systems.  Non-commercial Kermits can be
  643. had for more than 250 different machines and operating systems, ranging in
  644. size from the smallest micro to the largest supercomputer, and Kermit is
  645. included (at no extra charge) in about 100 different commercial software
  646. packages.  And, according to recent announcements from Telebit and AST,
  647. Kermit protocol is even beginning to find its way into silicon.  Xmodem is
  648. also available for a wide variety of computers, but it was designed
  649. primarily for micro-to-micro links.  It is most widely known by its
  650. commercial implementations, as a fixture in programs like Crosstalk.
  651.  
  652. Kermit, Xmodem, and other error-checking protocols are not equivalent.
  653. Kermit won't talk to Xmodem, and vice-versa.  Each must be evaluated
  654. according to several criteria: Is there a version of the protocol available
  655. for all the systems that must communicate?  Can the protocol accommodate all
  656. the communications parameters required for the systems, and for the
  657. communication medium?  Is the performance acceptable?  Is the software
  658. affordable?
  659.  
  660. Xmodem is more properly called the Christensen protocol after its designer,
  661. Ward Christensen, who originally intended it only for communication between
  662. CP/M micros.  Ward put his original 1977 MODEM program into the public
  663. domain, and it was modified by others over the years, and some protocol
  664. features were added, resulting in protocol variants with names like MODEM2,
  665. MODEM7, XMODEM, YMODEM, ZMODEM, etc.
  666.  
  667. The Kermit file transfer protocol was originally developed in 1981 at the
  668. Columbia University Center for Computing Activities for CP/M, MS-DOS, the
  669. DECSYSTEM-20, and IBM mainframes with VM/CMS; that is, for use in the
  670. micro-to-mainframe environment.  It was shared freely with other
  671. institutions, with sources and documentation included.  Everyone was, and
  672. is, permitted and encouraged to copy and share, to make improvements, and to
  673. contribute new versions.
  674.  
  675. Kermit and Xmodem both transfer files between computers in blocks of data,
  676. or packets.  Both protocols require a program running on each computer to
  677. compose, send, read, decipher, and act upon the packets.  Each packet is
  678. error-checked through the use of calculated checksums, and retransmission is
  679. requested when packets have incorrect checksums.  Deadlocks are broken by
  680. timeouts and retransmission.  Missing or duplicate packets are caught using
  681. packet sequence numbers.  Both protocols are half-duplex stop-and-wait: the
  682. next packet is not sent until the current packet is acknowledged.  Kermit
  683. and Xmodem packets are illustrated in Figure 3.
  684.  
  685. ------------------------------------------------------------------------------
  686.  
  687. Xmodem:
  688. +-------+-------+-------+------------------+-------+
  689. | SOH   | BLOCK |-BLOCK | DATA (128 bytes) | CHECK |
  690. +-------+-------+-------+------------------+-------+
  691.  
  692. All fields are 8-bit binary:
  693.  
  694. SOH     is ASCII Control-A (SOH, Start of Header).
  695. BLOCK   is the 8-bit binary "block" (packet) number, 1-127 (recycles).
  696. -BLOCK  is 255 minus the block number (1's complement of block number).
  697. DATA    is exactly 128 bytes of unencoded 8-bit data (a CP/M disk block).
  698. CHECK   is an 8-bit binary checksum.
  699.  
  700. Kermit:
  701. +-------+-------+-------+-------+----------+-------+
  702. | START | LEN   | SEQ   | TYPE  | DATA.... | CHECK | <cr>
  703. +-------+-------+-------+-------+----------+-------+
  704.  
  705. Each Kermit packet field except DATA is a single character.  Each field
  706. except START is composed only of printable ASCII characters.  The packet is
  707. normally terminated by a carriage return.
  708.  
  709. START is usually Control-A (SOH), but can be redefined.
  710. LEN   is the packet length, 0-94, encoded as a printable ASCII character.
  711. SEQ   is the packet sequence number, 0-63 (recycles), printable.
  712. TYPE  is the packet type, S F D Z B Y N, etc.
  713. DATA  is a file name, file data, etc, depending on TYPE, printable ASCII.
  714. CHECK is an 8-bit checksum, folded into 6 bits as a printable character.
  715.  
  716.                      Figure 3: Xmodem and Kermit Packets
  717.  
  718. ------------------------------------------------------------------------------
  719.  
  720. The differences between Xmodem and Kermit are worth noting.  First, Xmodem
  721. uses 8-bit binary bytes in its packet fields, and therefore requires an
  722. 8-bit transparent communication link.  It cannot function, even for text
  723. files, when parity is in use.  Similarly, when any device in the
  724. communication path is sensitive to control characters such as Control-Z or
  725. Control-S (which occur in the Xmodem packet control fields), Xmodem packets
  726. are subject to interference.  For this reason, Xmodem cannot operate in
  727. conjunction with XON/XOFF or other in-band flow control.  Kermit, on the
  728. other hand, encodes its packets as lines of text, and therefore does not
  729. have these restrictions.
  730.  
  731. Second, Xmodem packets are sent only in one direction.  The responses are
  732. bare unchecked control characters such as Control-F for acknowledgement,
  733. Control-U for negative acknowledgement, or Control-X for cancel.  Corruption
  734. of Xmodem responses into other valid responses is possible, and can cause a
  735. file transfer to terminate prematurely.  Kermit uses fully error-checked
  736. packets in both directions, and is therefore more robust in the face of
  737. transmission errors.
  738.  
  739. Third, Xmodem uses fixed-length packets.  There is no length field.  If a
  740. file's length is not an exact multiple of 128 bytes, then extra bytes will
  741. be transmitted.  Furthermore, if a computer, multiplexer, or other device
  742. cannot handle bursts of 132 characters, Xmodem packets will not get through.
  743. Kermit packets include a length field.  Packets can be adjusted to
  744. accommodate small buffers, and a short packet can be sent at the end, so
  745. there is no confusion about the exact end of file.
  746.  
  747. Fourth, Xmodem includes no mechanism for transmitting the file's name, and
  748. therefore has no way of sending multiple files in a single session.  Kermit
  749. does this routinely.
  750.  
  751. Fifth, Xmodem makes no distinction between text and binary files.  But since
  752. the conventions for representing text files on different systems can vary,
  753. the results of an Xmodem text-file transfer between unlike systems can be
  754. surprising.  Kermit specifies a common intermediate representation for text
  755. files during transmission, so that incoming text files can always be stored
  756. in a useful form.  However, this places the burden on the user to select
  757. text or binary transfer mode.
  758.  
  759. Finally, both the Xmodem and Kermit protocols have seen a number of
  760. extensions over the years.  Xmodem has no formal or consistent way to
  761. negotiate the presence or absence of given features, whereas feature
  762. negotiation is built into the basic Kermit protocol.  A pair of variant
  763. Xmodem programs will not necessarily be able to communicate, whereas any
  764. pair of Kermit programs will automatically fall back to the greatest common
  765. set of options.  Xmodem and Kermit protocol extensions include:
  766.  
  767. . Multiple files.  MODEM7 and YMODEM can transfer multiple files in a single
  768.   batch, Xmodem can't.  Multiple file transmission is built into the basic
  769.   Kermit protocol.
  770.  
  771. . The ability to pass 8-bit data through a 7-bit channel.  Xmodem can't.
  772.   Kermit supplies this as a negotiated feature (commonly available).
  773.  
  774. . Alternate checksums.  Xmodem-CRC uses a 16-bit cyclic redundancy check for
  775.   greater reliability, and tries to adapt itself to 8-bit-checksum-only Xmodem
  776.   programs automatically.  Kermit supplies an optional 12-bit checksum, and
  777.   a 16-bit CRC, negotiated with automatic fallback to the single character
  778.   checksum.
  779.  
  780. . File transfer interruption.  Both Xmodem and Kermit allow file transfer
  781.   to be interrupted cleanly.  Kermit also includes the ability to cancel the
  782.   current file in a group and proceed to the next one.
  783.  
  784. . Compression.  Kermit programs may negotiate compression of repeated bytes.
  785.   Xmodem lacks a compression option.
  786.  
  787. . Long packets.  YMODEM allows 1K-byte fixed-length packets for greater
  788.   efficiency.  Kermit extensions permit variable-length packets up to about
  789.   9K, negotiated with automatic fallback to regular-length packets.
  790.  
  791. . Sliding windows.  Kermit programs may negotiate simultaneous and
  792.   continuous transmission of packets and their acknowledgments on
  793.   full-duplex links, with a window of up to 31 unacknowledged packets, and
  794.   selective retransmission of lost or damaged packets.  (This option is not
  795.   yet widespread among Kermit implementations). Sliding windows are not
  796.   possible in Xmodem because its responses carry no sequence number (an
  797.   Xmodem variant called WMODEM simulates sliding windows, but only works if
  798.   there are no errors).
  799.  
  800. . File attributes.  YMODEM transmits a file's name, size, and creation date.
  801.   Xmodem does not.  Kermit always transmits the name, and the ability to
  802.   communicate a wide range of other file attributes may be negotiated (but,
  803.   like sliding windows, this is not yet a widely implemented Kermit feature).
  804.  
  805. . Checkpoint/restart.  ZMODEM includes the ability to restart a file transfer
  806.   after the connection was broken.  Neither Xmodem nor Kermit have this
  807.   ability.
  808.  
  809. Kermit also differs from Xmodem by including a "file server" mode of
  810. operation, in which the remote Kermit program receives all its instructions
  811. from the PC Kermit in packet form.  This simplifies operation considerably.
  812. Kermit servers can transfer files, as well as perform a variety of file
  813. management functions -- deletion, directory listing, changing directories,
  814. etc.
  815.  
  816. Implementations of Kermit can be had for most PCs, minis and mainframes.
  817. Xmodem implementations are found mostly on PCs, rarely on minis and
  818. mainframes.  Basic Xmodem is somewhat more efficient than basic Kermit,
  819. because the packets are slightly longer and there is less encoding overhead.
  820. The situation is reversed when Kermit can do compression, long packets, or
  821. sliding windows.
  822.  
  823. Most commercial RS-232 communication packages claim to include Xmodem,
  824. Kermit, or both.  In general, the commercial Xmodem implementations include
  825. none of the MODEM7, YMODEM, or ZMODEM options, but often do include support
  826. for CRCs.  Thus, they can transfer only a single file at a time, and only
  827. through transparent 8-bit communication channels.  The commercial Kermit
  828. implementations vary from the bare-bones to the very advanced, but all can
  829. transfer text files through 7-bit links, and can handle multiple files in a
  830. single operation.  It is not always apparent from vendor literature exactly
  831. which options are supported, so if any of these issues are important to you,
  832. you should call the vendor and ask about them.  After all, one of the
  833. advantages of commercial offerings over public domain software is telephone
  834. support.
  835.  
  836. {h2} OTHER ASYNCHRONOUS PROTOCOLS
  837.  
  838. Xmodem and Kermit are not the only two asynchronous communication protocols
  839. in the marketplace.  Others include UUCP, Blast, MNP, X.PC, Poly-Xfr, DX,
  840. Compuserve, FAST, and DART.  Most of these protocols are proprietary, which
  841. means that the protocol specification itself is secret, or licensed, and
  842. they are found primarily in commercial packages.  They often include
  843. advanced capabilities like checkpoint/restart, bidirectional file transfer,
  844. and sliding windows.
  845.  
  846. But all proprietary protocols have the same drawbacks: you must buy
  847. commercial packages in order to use them, and if there is not a package
  848. available for a certain computer that you need it for, you're out of luck.
  849. Of the commercial packages, Blast probably comes closest to Kermit in
  850. covering a wide variety of systems, and exceeds Kermit in many design and
  851. performance areas.  The drawback is the cost: $250 for the PC version, $450
  852. for a PDP-11 version, and more for larger minis or mainframes.  And since
  853. the Blast protocol is inherently full duplex, a special "Blast box" front
  854. end must be purchased for half duplex systems.  Kermit, on the other hand,
  855. may be used with either full or half duplex systems, and the cost is
  856. minimal.
  857.  
  858. {h1} SUMMARY
  859.  
  860. Here is a checkoff list that you can use to evaluate and compare
  861. communication packages.  Before purchase, you should decide which features
  862. are important to you, and then determine which packages have these features.
  863. Check the vendor literature, or call the vendor directly.
  864.  
  865. COST:
  866. . What is the per-PC cost of the package?
  867. . How many PCs will you need it for?
  868. . Is copying allowed?
  869. . If not, is there a site license or volume discount policy?
  870. . Do you also need minicomputer or mainframe versions?
  871. . How many?
  872. . How much do they cost?
  873. . What is the total cost to your organization?
  874.  
  875. . What is your primary use for the package?
  876.   a. Long interactive remote sessions?  Communication parameter settings,
  877.      terminal emulation, and key definition are the most important features.   
  878.   b. Infrequent remote sessions mainly for the purpose of data transfer?
  879.      Concentrate on user interface, script language, file transfer protocol.
  880.  
  881. DOCUMENTATION:
  882. . Is it thick and unmanagable, thin and cryptic, or just right?
  883. . How much does the manual cost?
  884. . Is telephone support available?
  885.  
  886. USER INTERFACE:
  887. . Is help available at all times?
  888. . Does it favor the novice user?
  889. . Does it favor the expert user?
  890. . Is it equally convenient for both novice and expert?
  891. . Can canned procedures be set up for unskilled users?
  892. . Can you access local system functions without leaving the package?
  893. . Can it be used by the disabled?
  894.  
  895. COMMUNICATION PARAMETER SETTINGS (always important):
  896. . Bits/second:   0,50,75,110,300,600,1200,2400,4800,9600,19200,38400,56000
  897. . Duplex:        Full, Half 
  898. . Echo:          Remote, Local
  899. . Data bits:     7, 8
  900. . Stop bits:     1, 1.5, 2
  901. . Parity:        None, Even, Odd, Mark, Space
  902. . Character set: 7-bit ASCII, 8-bit "extended ASCII", others
  903. . Flow control:  None, XON/XOFF, ENQ/ACK, RTS/CTS, half duplex handshake
  904. . Debugging:     Transparent display, logging
  905. . Configuration: Can you collect settings into configuration files?
  906.  
  907. CONNECTION ESTABLISHMENT:
  908. . Modem control (support for RS-232 modem signals)?
  909. . Is loss of carrier detected?
  910. . Specific support for particular internal modems?
  911. . Dialer control (for your particular modem's dialing language)?
  912. . Can it be used without modems?
  913. . Phone directory?
  914. . Debugging tools?
  915. . Script language?
  916. . Access to all necessary commands from script language?
  917. . Conditional execution/termination of script commands?
  918. . Can the program be suspended and resumed without dropping the connection?
  919.  
  920. TERMINAL EMULATION:
  921. . Is the maximum speed for full duplex operation sufficient for you?
  922. . Is a terminal emulated that is supported by the system you want to talk to?
  923. . Is the terminal emulated fully enough for use with all desired host packages?
  924. . Is any special hardware (like a 132-column board) required?
  925. . Colors?  (Do you need them?)
  926. . If a graphics terminal is emulated, does your application support it? 
  927. . Screen rollback?
  928. . Screen dump?
  929. . Function keys?
  930. . Key redefinition?
  931. . Keystroke macros?
  932.  
  933. FILE TRANSFER PROTOCOLS:
  934. . ASCII
  935. . XON/XOFF
  936. . Xmodem
  937. . Kermit
  938. . Proprietary (Blast, MNP, etc)
  939. . Do the systems you're communicating with support the same protocol?
  940. . Does it transfer both text and binary files?
  941.  
  942. XMODEM OPTIONAL FEATURES:
  943. . MODEM7-style transfer of multiple files
  944. . Xmodem-CRC
  945. . YMODEM 1K packets
  946. . YMODEM filename
  947. . Checkpoint/restart (ZMODEM)
  948. . WMODEM continous transmission
  949.  
  950. KERMIT OPTIONAL FEATURES:
  951. . 8-bit data thru 7-bit link
  952. . Repeated character compression
  953. . 12-bit checksum, CRC
  954. . File transfer interruption
  955. . Long packets (up to 9K)
  956. . Sliding windows
  957. . File attributes
  958. . Server operation
  959. . Remote host commands and file management
  960.