home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / misc / cbx.txt < prev    next >
Text File  |  2020-01-01  |  68KB  |  1,326 lines

  1.  
  2.  
  3.                   MAKING RS-232-C COMMUNICATIONS PACKAGES
  4.                           WORK WITH A DIGITAL PBX
  5.  
  6.                       Christine Gianone and Frank da Cruz
  7.               Columbia University Center for Computing Activities
  8.                               New York, NY 10025
  9.  
  10.                                  30 July 1988
  11.  
  12.  
  13.  
  14.  
  15. Organizations are people.  What happens when a large organization embarks on a
  16. massive conversion of its data communications infrastructure?  The ultimate
  17. effect is on the people sitting at their personal computers, running the
  18. software packages they are accustomed to, accessing the applications and
  19. services required by their work.  Communications software packages represent an
  20. enormous investment in both time and money.  Can this investment be preserved
  21. when an analog telephone voice network and a separately switched terminal
  22. network are replaced by a single digital voice/data private branch exchange?
  23. In this article, we will address a very specific concern: how RS-232-C
  24. communications software packages (see Shopping for software that lets PCs with
  25. mainframes, December 1987) can be adapted to the new environment.
  26.  
  27. Several years ago, during the early days of disvestiture, Columbia University
  28. began to investigate of the possibility of replacing its AT&T Centrex telephone
  29. equipment with a university-owned private branch exchange (PBX).  Ownership of
  30. the switch and wiring plant has its advantages, primarily cost containment and
  31. operational control.  The high capital expenditure could be offset over time by
  32. the expected savings in operating costs.  Columbia's request for proposals
  33. included a requirement for simultaneous data and voice capabilities, as well as
  34. for extra wire pairs at each wall jack to accommodate future data expansion.
  35.  
  36. The university is now in the throes of installing an IBM 9750 Business
  37. Communications System, which is composed of an IBM 9751 Computerized Branch
  38. Exchange (CBX) Model 70 connected to desktop ROLMphones (see Inside IBM's new
  39. PBX, or the search for an office networking hub, January 1988).  When the
  40. project is complete, 75 buildings on and around Manhattan's Morningside Heights
  41. campus will be completely rewired, with the wiring plant extending to virtually
  42. every office, classroom, and dormitory room.  For off-campus buildings, a total
  43. of a dozen cable trenches will be dug across the local streets.  In all, 6,000
  44. miles of cable will be laid.  About 50,000 wire pairs will be connected to the
  45. main distribution frame in Columbia's central administration building, Low
  46. Library.  One hundred thousand pairs of riser cables will be installed, and a
  47. similar number of station cables will be connected to about 13,000 voice/data
  48. jacks, about 3,500 of them in dormitories.  Whereas data installations were
  49. once difficult or impossible, often requiring months of lead time, the new
  50. wiring plant will make them quick and simple.
  51.  
  52. The cutover will affect all those who use the university's computers because
  53. the 9750 Business Communications System will replace not only the Centrex phone
  54. equipment, but also the Gandalf PACX IV data switch, which provides access to
  55. Columbia's central mainframe computers.  Because of fundamental differences
  56. between Centrex and the new switch, the installation will also affect those who
  57. dial out from their offices to external services.
  58.  
  59. When the new switch is fully installed, it will provide intra-switch
  60. connections, dialin connections, and dialout connections.  Each of these
  61. presents its own conversion problems, and choosing among complicated options
  62. may be critical to achieving satisfactory data communications.
  63.  
  64. Although the present discussion is specific to the IBM 9750 Business
  65. Communications System, it also applies in large part to the Rolm and IBM/Rolm
  66. CBX products, such as the CBX II 9000 and the VSCBX 8000.  The problems
  67. addressed would likely surface during installations of digital PBXs from other
  68. vendors as well.  For the remainder of this article, the IBM 9750 will be
  69. referred to as "the CBX."
  70.  
  71.  
  72. Data Calls to Campus Computers
  73.  
  74. For the past 12 years, terminals at Columbia University have been connected to
  75. Columbia's central mainframes through a Gandalf PACX IV data switch.  PACX
  76. connections come in the form of an LDS-125, a limited-distance modem on the
  77. user's desk with four wires carrying analog signals back to the PACX.  To
  78. connect to a particular computer, the user turns on the LDS-125, types a
  79. carriage return for speed recognition, then gets a menu of the available
  80. systems, and is prompted to select one:
  81.  
  82.   Welcome to PACX IV SE.
  83.  
  84.   Valid node names are: HOSTA, HOSTB, HOSTC, MYHOST
  85.  
  86.   Enter node name => (user types system name here)
  87.  
  88. For example, the user might type MYHOST.  The PACX maintains a table of
  89. computer host names and associated ports.  When a known host is selected, the
  90. PACX finds the first free port and establishes a circuit between it and the
  91. user's terminal port, as shown in Figure 1.  When dialing in from off-campus,
  92. the LDS-125 is replaced by the user's modem, and the user dials the number of a
  93. modem hunt group connected to the PACX.  Once the dial connection is complete,
  94. the procedure is the same.
  95.  
  96. -------------------------------------------------------------------------------
  97.  
  98.  
  99.                                                     __________
  100.                   Gandalf PACX                     O          |
  101.                   _____________________            O  Host A  |
  102.   terminal ----- O                     O           O          |
  103.   terminal ----- O                     O           O__________|
  104.   terminal ----- O                     O            __________
  105.   terminal ----- O                     O           O          |
  106.      :                                 O           O  Host B  |
  107.      :                                 O           O          |
  108.    modem ------- O                     O           O__________|
  109.    modem ------- O                     O            __________
  110.    modem ------- O                     O           O          |
  111.    modem ------- O_____________________O           O  Host C  |
  112.                                                    O          |
  113.                                                    O__________|
  114.  
  115.   (** REPLACE WITH ARTWORK **)
  116.  
  117.  
  118.                      Figure 1:   The Gandalf PACX Data PBX
  119.  
  120. -------------------------------------------------------------------------------
  121.  
  122. Under the new regime, Centrex phones will be replaced with special units
  123. manufactured by IBM/Rolm, called "ROLMphones."  These can be voice-only, or
  124. voice/data.  The data option adds a 25-pin RS-232-C connector and accompanying
  125. electronics to the single-line or multiple-line voice telephone.  Through a
  126. single pair of wires, a data-equipped phone can manage a voice conversation
  127. simultaneous with an asynchronous data connection up to 19.2 Kbit/s, using a
  128. proprietary protocol known as "ROLMlink."  This single instrument replaces the
  129. Centrex telephone, the LDS-125, and the user's dialout modem.
  130.  
  131. When the PACX is replaced by the new CBX, the dialog will change.  As before,
  132. the user types a carriage return for speed recognition, but the prompt is
  133. different, and the user must type "call" in front of the hostname.
  134.  
  135.   CALL, DISPLAY OR MODIFY?
  136.   call myhost
  137.   CALLING 74258
  138.   CALL COMPLETE
  139.  
  140. In this case, the user types "CALL MYHOST".  This superficial change in format
  141. should not pose an insurmountable problem.  In all likelihood, users have been
  142. interacting with the PACX "manually" all these years, and conversion to the new
  143. switch will be a minor psychological adjustment.  Dialing in from off-campus
  144. also remains the same as before except for the change in syntax.
  145.  
  146.  
  147. The Modem Problem
  148.  
  149. Matters are more complicated for those who want to dial off-campus sites from
  150. campus phones.  To understand why, it helps to know something about modems and
  151. their relationship to the CBX.
  152.  
  153. A modem, or "modulator-demodulator," converts the digital signals of a
  154. computer's RS-232-C serial communications port to analog waveforms suitable for
  155. transmission on voice-grade telephone lines, and vice versa (Fig.  2).
  156.  
  157. -------------------------------------------------------------------------------
  158.  
  159.  
  160.      RS-232-C        Analog phone line        RS-232-C
  161.   PC----------modem---------------------modem----------host
  162.     (digital        (wavy analog waves)
  163.      square
  164.      waves)
  165.  
  166.                   Figure 2:   A Traditional Modem Connection
  167.  
  168. -------------------------------------------------------------------------------
  169.  
  170. Modems come in two major varieties: acoustically coupled and directly connected
  171. (Fig. 3).  Acoustic coupling is susceptible to noise and vibration; therefore,
  172. it only works under good conditions, and only up to speeds of 300 bit/s or 1.2
  173. Kbit/s.
  174.  
  175. -------------------------------------------------------------------------------
  176.  
  177.  
  178.   A picture of an acoustic coupler, an external direct-connect modem, and an
  179.   internal modem
  180.  
  181.  
  182.                 Figure 3:   Acoustic vs. Direct-Connect Modems
  183.  
  184. -------------------------------------------------------------------------------
  185.  
  186. Whether internal or external to the computer, direct-connect modems reduce
  187. potential problems and increase the maximum speed by providing a direct
  188. electrical connection to the telephone wall jack.  Furthermore, these modems
  189. have access to all the wires in the phone circuit, so they can simulate all the
  190. functions of a telephone: detecting and answering a ring, going off-hook, and
  191. even dialing a phone number.
  192.  
  193. ROLMphones cannot be used with direct-connect modems, however, because the
  194. proprietary ROLMlink signaling that takes place between the telephone and the
  195. CBX is incompatible with the signaling methods used by modems (Fig.  4).  Thus,
  196. it serves no purpose to plug a modem into the ROLMphone's wall jack -- the
  197. modem and the switch will not be able to communicate.
  198.  
  199. Hundreds of people at the university have direct-connect modems in their
  200. offices or dorm rooms.  If they cannot use these modems with their new
  201. ROLMphones, then how can they call off-campus computers, outside data services,
  202. and computer bulletin boards?
  203.  
  204. -------------------------------------------------------------------------------
  205.  
  206.  
  207.                                                       Analog
  208.      RS-232-C           ROLMlink      RS-232-C        phone line
  209.   PC----------ROLMphone-----------CBX-----------modem---------------
  210.  
  211.   (phone line, cont'd)       RS-232-C          (** SEE ARTWORK **)
  212.   ---------------------modem----------host
  213.  
  214.                   Figure 4:   Dialing Out from the IBM Switch
  215.  
  216. -------------------------------------------------------------------------------
  217.  
  218. IBM's solution to the dialout problem is to provide the switch with a central
  219. outbound modem pool, in which modems are assigned dynamically to those who
  220. request them.  The pool has many advantages: it is shared by all of the
  221. univerity's computer users, so economies of scale are achieved; it is centrally
  222. maintained; and it can be upgraded as new technologies appear.  It may be used
  223. by anyone having a ROLMphone with the data option, plus a terminal or personal
  224. computer with a serial communications port and a modem cable.  (Those who have
  225. an internal modem only, with no serial port, will have to get a serial port and
  226. cable.)
  227.  
  228. However, the modem pool has one key disadvantage: the conventions used for call
  229. placement are not the ones used by the Hayes modem.  This seems a trivial point
  230. until we begin to look at the popular communications software packages that are
  231. actually in use on campus.  Most of these packages expect to be running on
  232. personal computers that are connected to Hayes or compatible modems and,
  233. therefore, "speak" to the modem using the Hayes AT command set.  The switch,
  234. however, does not accept AT commands, and most communications software packages
  235. are not written with the IBM 9751 CBX call-placement dialog in mind.  How can
  236. these software packages be made to work with the new CBX?
  237.  
  238.  
  239. Alternatives
  240.  
  241. To accommodate software packages that require the Hayes command language for
  242. dialing, IBM offers the 244PC.  This is a special four-line data-equipped
  243. ROLMphone which contains a built-in Hayes AT command set interpreter.  But
  244. because this is a multiline telephone, the expense to the user is greater than
  245. for the normal single-line phone with data.
  246.  
  247. It is also possible to furnish users with analog, rather than digital,
  248. telephone sets.  But here too, the cost is higher than a for a digital line, in
  249. this case because extra interface cards are required in the CBX.  Analog phones
  250. could be used with Hayes or other direct-connect modems, either internal or
  251. external.  Furthermore they may be necessary for devices that use modems, but
  252. which use nonstandard data transmission techniques on the digital end, such as
  253. Telecommunication Devices for the Deaf (TDD's) that use a 5-bit Baudot code.
  254. And analog phones are also required for use with facsimile machines and other
  255. special-purpose devices that have built-in modems.
  256.  
  257. As third alternative, it was discovered that the ROLMphone can be used at low
  258. speeds with acoustically coupled modems, or acoustic adapters for
  259. direct-connect modems.  But these devices cannot be used for autodialing
  260. because the CBX does not respond to the pulse or DTMF dialing tones which are
  261. generated by autodial modems, in their mimicry of real telephones.
  262. Nevertheless, the growth of the digital PBX market could result in a mini-boom
  263. for acoustic couplers and adapters, catering to those who would rather live
  264. with low speeds and without autodialing than pay the monthly data service
  265. surcharge: one step forward, two steps back...
  266.  
  267. In a large organization like Columbia University, a great deal of money can be
  268. saved by avoiding the 244PC and the analog phone wherever possible.  This can
  269. be done if the popular communication software packages can be adapted to the
  270. CBX's normal call setup procedure.
  271.  
  272.  
  273. Dialout Mechanisms
  274.  
  275. Why should there be such a fuss over what the user must type to place a data
  276. call?  Let's look at the question in more detail.
  277.  
  278. The dialing language of an autodial modem allows users to place calls by typing
  279. simple commands from a terminal or personal computer.  But first, the cables
  280. must be correctly connected and the modem turned on (blunders along these lines
  281. can happen to the best of us).  Then the communications software must be set
  282. for the desired transmission speed and parity, and the personal computer or
  283. terminal must be sending the Data Terminal Ready (DTR) signal to the modem.
  284. Then the software can be connected to the modem, and the user can type dialing
  285. commands.
  286.  
  287. The Hayes AT command language is simple but powerful.  A typical dialog with a
  288. Hayes modem (or a 244PC, which emulates the Hayes modem) goes something like
  289. this:
  290.  
  291.   ATZ F1 Q0 V1 X1 S0=0    (User types modem initialization string)
  292.   OK                      (Modem responds "OK")
  293.   ATDT 9,7654321          (User types dialing command)
  294.   CONNECT 1200            (Normal modem response)
  295.  
  296. The user's commands begin with AT, the modem's command introducer.  The
  297. initialization string puts the modem in a known state, so that the software can
  298. control it properly.  In the sample shown above, the Z resets the modem to
  299. default settings; F1 puts it in full-duplex no-echo mode; Q0 instructs it to
  300. produce result codes; V1 specifies that the result codes should be words (for
  301. example, CONNECT or BUSY) rather than digits; X1 selects the extended result
  302. code set (for example, CONNECT 1200); and S0=0 disables auto-answer.  Once
  303. initialized, the modem replies "OK", and the user types the dialing command
  304. ATDT followed by the phone number.  When the other modem answers, the user sees
  305. the message "CONNECT 1200".
  306.  
  307. Most software packages expect to be controlling a Hayes modem.  The user simply
  308. supplies the telephone number; the software supplies the appropriate AT
  309. commands to the modem and interprets the modem's responses (OK, CONNECT, BUSY,
  310. NO ANSWER, etc.), all of which is invisible to the user.  Packages like
  311. Smartcom (Hayes Microcomputer Products, Inc.)  and Crosstalk (DCA/Crosstalk
  312. Communications) are able to present the user with a dialing directory, from
  313. which the user chooses the number to be dialed.  The package does the rest.
  314.  
  315. On the IBM 9751 CBX, call placement dialog is through Interactive Call Setup
  316. (ICS), which is markedly different from the Hayes dialog:
  317.  
  318.    1. The user selects the desired communications speed and parity (for
  319.       example, 1.2 Kbit/s, even parity) and ensures that the personal
  320.       computer is asserting the DTR signal.
  321.  
  322.    2. The user transmits a carriage return so the CBX can determine the
  323.       transmission speed.
  324.  
  325.    3. ICS, after some delay, responds with "CALL, DISPLAY OR MODIFY?".
  326.       The user should not transmit until this prompt has appeared.
  327.  
  328.    4. The user transmits "call 976543210" (or any desired number),
  329.       followed by carriage return (the first two digits represent a
  330.       request for an external line).
  331.  
  332.    5. There is a delay while the CBX attempts to make the connection.
  333.       Various messages may appear, such as "CALLING 74250", which should
  334.       be ignored.  Characters transmitted to the CBX during this period
  335.       will be lost.
  336.  
  337.    6. If the call was placed to a local host, and it was completed, the
  338.       message "CALL COMPLETE" is issued, and the user is connected with
  339.       the host.  If the user was dialing out through the modem pool, the
  340.       connection is made silently, with no call complete indication.  If
  341.       the connection could not be made, the message "CONNECTION FAILED" is
  342.       issued.
  343.  
  344.    7. Characters may now be transmitted to the host computer.  In most
  345.       cases a carriage return is required to get the host's attention.
  346.  
  347.  
  348. Making the Software Connection
  349.  
  350. In general, communication software packages can provide three ways to establish
  351. a connection to a remote computer:
  352.  
  353.    1. Direct, meaning there is no dialing procedure.  The user just
  354.       "connects" and starts interacting with the remote computer
  355.       immediately.  This method is generally provided for use with PCs
  356.       that are hardwired to computers with no intervening modems, but it
  357.       allows the user to get at the dialing language of a modem (or data
  358.       switch) that the package doesn't support.
  359.  
  360.    2. Dialup, usually configured for Hayes and/or other types of modems,
  361.       where the user can configure the package to dial new kinds of modems
  362.       (or data switches) not explicitly supported by the program.  Since
  363.       no known software package has built-in dial support for ICS, the
  364.       dial feature can only be used with ICS if the user can tailor the
  365.       dialing mechansism.
  366.  
  367.       The dial feature is important because it is often associated with a
  368.       phone directory, in which each entry contains not only the phone
  369.       number, but also the associated communications settings.
  370.  
  371.    3. A script, in which the user writes a program in the package's script
  372.       language to interact with a remote computer or other device either
  373.       directly or through a modem.  The script generates what the user
  374.       would type, and reacts to responses the same way the user would.
  375.  
  376.       Scripts are important for two reasons.  The first is convenience,
  377.       since they allow routine, repetitive interactions to be done by the
  378.       computer rather than the human.  "Pushbutton" applications can be
  379.       set up for administrative or data entry personnel to minimize
  380.       training and headaches.  The second reason, perhaps more important,
  381.       is that scripts allow unattended operations.  One computer can call
  382.       up another when everyone is asleep and phone rates are low to
  383.       transfer files or exchange mail.  Networks like USENET and FIDO
  384.       depend on this kind of unattended operation.
  385.  
  386. The communications software packages used at Columbia were checked for their
  387. ability to handle each of these methods.  Several packages are discussed in
  388. detail but many more were evaluated (Table 1).  If the package allows direct
  389. connection, then it may be used with the CBX.  If the package includes a dial
  390. feature, then this was tested for adaptability to the CBX.  Finally, if the
  391. package has a script language, scripts were written to place calls from the CBX
  392. through ICS.  Note that scripts and certain dial commands depend on receiving a
  393. call completion indication from the "modem".  Because the IBM 9751 CBX provides
  394. a CALL COMPLETE message when calling a local host, but not when dialing out
  395. through the modem pool, different methods must be used in each case.
  396.  
  397.  
  398. MS-DOS KERMIT 2.31
  399.  
  400. Kermit is a file transfer protocol developed at Columbia University, so
  401. packages based on it are popular on campus.  All Kermit programs support direct
  402. (no-modem) connections and thus work with the CBX.  Many commercial
  403. communications packages incorporate the Kermit protocol, but this is no
  404. guarantee that they can be adapted to the CBX (although most of them can).  The
  405. MS-DOS version of Kermit for the IBM PC and compatibles is used not only for
  406. file transfer but also for VT102 and Tektronix terminal emulation in hundreds
  407. of locations throughout the university.
  408.  
  409. Like all Kermit implementations, MS-DOS Kermit is easy to install and run.  No
  410. lengthy configuration dialog is required.  The user simply starts the program,
  411. sets the minimum parameters necessary for communications (usually just speed
  412. and parity), and then uses the CONNECT command to begin terminal emulation.
  413. This allows immediate communication with whatever is connected to the PC's
  414. serial port: the PACX, a modem, or a ROLMphone (Fig. 5).
  415.  
  416. -------------------------------------------------------------------------------
  417.  
  418.  
  419.   (What the user types is underlined; a terminating carriage return is implied)
  420.  
  421.   A>kermit
  422.   IBM-PC Kermit-MS Version 2.31
  423.   Type ? or HELP for help
  424.  
  425.   Kermit-MS>set speed 2400
  426.   Kermit-MS>connect
  427.  
  428.      (User types a carriage return here)
  429.  
  430.   CALL, DISPLAY OR MODIFY?
  431.   call 976543210
  432.  
  433.      (User waits for a beep from the phone, then types carriage return.)
  434.  
  435.   login:
  436.  
  437.               Figure 5:   MS-DOS Kermit Direct Connection to CBX
  438.  
  439. -------------------------------------------------------------------------------
  440.  
  441. In addition, MS-DOS Kermit allows scripts to be written to automate any
  442. procedure that the user would do manually.  For example, the script shown in
  443. Figure 6 could be used to call the number 6543210 through the CBX and begin the
  444. login process on the remote computer.
  445.  
  446. -------------------------------------------------------------------------------
  447.  
  448.  
  449.   set input timeout quit    ; Quit if desired input doesn't appear
  450.   set speed 1200            ; Set desired speed
  451.   output \13                ; Carriage return (ASCII 13) wakes up ICS
  452.   input 10 MODIFY?          ; Wait up to 10 seconds for ICS prompt
  453.   pause 1                   ; Wait one second before replying
  454.   output call 976543210\13  ; Call the phone number (97 dials outside)
  455.   pause 20                  ; Wait 20 seconds for completion
  456.   output \13                ; Send a carriage return to the host
  457.   input 20 login:           ; Wait for "login:" prompt
  458.   connect                   ; Let the user take over
  459.  
  460.          Figure 6:   MS-DOS Kermit Script for Dialing Out from the CBX
  461.  
  462. -------------------------------------------------------------------------------
  463.  
  464. This script may be created using any text editor and saved in a file.  The
  465. Kermit program can be instructed to execute the script file by using the TAKE
  466. command, specifying the file's name.  The file can contain any valid Kermit
  467. commands, but the INPUT, OUTPUT, and PAUSE commands are special for scripts
  468. because they simulate what the user would do during terminal emulation.  OUTPUT
  469. sends the characters that the user would type, and INPUT reads the characters
  470. that are received from the other computer, looking for the specified character
  471. sequence.  The command SET INPUT TIMEOUT QUIT tells Kermit that if the
  472. requested input does not appear within the specified time interval, then the
  473. script should not be continued.  These commands do what the user would do, so
  474. they perform a kind of "human emulation".
  475.  
  476. When a call is made to a local computer attached as a host to the CBX, a CALL
  477. COMPLETE message is issued.  The annoying twenty-second pause required in the
  478. dialup case is eliminated so that the script can proceed immediately upon
  479. receipt of the message (Fig. 7).
  480.  
  481. -------------------------------------------------------------------------------
  482.  
  483.  
  484.   output call myhost\13     ; Call the computer named is "myhost"
  485.   input 20 CALL COMPLETE    ; Wait up to 20 seconds for completion
  486.   output \13                ; Send a carriage return to the host
  487.   input 20 login:           ; Wait for "login:" prompt
  488.   connect                   ; Let the user take over
  489.  
  490.                  Figure 7:   Taking Advantage of CALL COMPLETE
  491.  
  492. -------------------------------------------------------------------------------
  493.  
  494. A single script could be used in both cases, provided Kermit was instructed to
  495. allow for immediate response when the CALL COMPLETE message appears, and a
  496. mandatory pause when it does not (Fig. 8).  In this case, SET INPUT TIMEOUT
  497. QUIT is replaced with SET INPUT TIMEOUT PROCEED to tell Kermit not to give up
  498. if the expected output did not appear.
  499.  
  500. -------------------------------------------------------------------------------
  501.  
  502.  
  503.   set input timeout proceed ; Ignore timeouts, keep going.
  504.   input 20 CALL COMPLETE    ; Wait up to 20 seconds for completion
  505.   output \13                ; Send a carriage return to the host
  506.   set input timeout quit    ; From now on, quit script upon timeout
  507.   input 20 login:           ; Wait for "login:" prompt
  508.   connect                   ; Let the user take over
  509.  
  510.             Figure 8:   Allowing for Local and Dialout Connections
  511.  
  512. -------------------------------------------------------------------------------
  513.  
  514. Kermit scripts illustrate the general characteristics of a script language: the
  515. ability to send characters to a remote device, to receive characters and
  516. compare them with a given pattern, to set time limits on selected operations,
  517. to pause for specified intervals, and to quit when the script is obviously not
  518. working.  Scripts also include some kind of notation for special characters
  519. that could not be included otherwise, such as Kermit's \13 for carriage return
  520. (13 is the ASCII value for that character).
  521.  
  522. This has been a simple example of a script, but it's not very useful as it
  523. stands because it can be used only to dial a particular phone number.  It would
  524. be much more convenient to be able to define a command, "dial," that would
  525. perform this procedure for any telephone number, and some script languages
  526. allow this.  For example, Figure 9 shows how this could be done in MS-DOS
  527. Kermit.
  528.  
  529. -------------------------------------------------------------------------------
  530.  
  531.  
  532.   define dial set inp tim q,set sp 1200,out \13,in 10 MODIFY?,-
  533.     pau 1,out call \%1\13,pau 20,out \13,in 20 login:,connect
  534.  
  535.                    Figure 9:   Defining a New Kermit Command
  536.  
  537. -------------------------------------------------------------------------------
  538.  
  539. Here the new command "dial" is defined to execute all the commands from the
  540. previous example (note how Kermit allows commands to be abbreviated), but with
  541. the desired phone number substituted for the formal parameter "\%1" at the time
  542. the command is executed, a la MS-DOS batch.  With this definition in place, the
  543. Kermit user could type "dial 975551212" or "dial 34321" (a local extension), or
  544. any other number.  For even greater brevity, the user could define shorthand
  545. commands to dial frequently used numbers:
  546.  
  547.   define d1 dial 975551212
  548.   define d2 dial 54321
  549.  
  550. Kermit, like many other packages, will automatically execute any commands found
  551. in a special "initialization file" upon startup.  This is a good place to keep
  552. definitions such as these, so that they will always be in effect every time you
  553. run the program.
  554.  
  555. Scripts can also have features for decision making: For example, the Kermit
  556. script shown in Figure 10 will work with either a Hayes modem or the IBM 9751
  557. CBX.
  558.  
  559. -------------------------------------------------------------------------------
  560.  
  561.   ; A Kermit script that tries different dialing methods.
  562.   ; First, define a command to handle dialing failure:
  563.   define giveup echo Dialing failed, hangup, stop
  564.   ; Now the script itself...
  565.   set speed 2400                  ; Set desired speed.
  566.   :HAYES                          ; Let's see if it is a Hayes modem.
  567.   output ATZ F1 Q0 V1 X1 S0=0\13  ; Initialize modem at this speed.
  568.   input 10 OK                     ; Look for Hayes response.
  569.   if failure goto cbx             ; Not found, go try CBX dialing.
  570.   echo Hayes dialing...           ; It's Hayes, tell the user.
  571.   output ATDT 97,555-1212\13      ; Dial the number and <CR>.
  572.   input 30 CONNECT                ; Look for modem's confirmation.
  573.   if failure giveup               ; Give up after waiting 30 seconds.
  574.   reinput 3 2400                  ; Was the message CONNECT 2400?
  575.   if success goto good            ; If so, we're ready to go.
  576.   reinput 2 1200                  ; No, how about 1200?
  577.   if failure giveup               ; Neither, so quit.
  578.   set speed 1200                  ; It was 1200, so adjust speed.
  579.   goto good                       ; Go issue message and connect.
  580.   :CBX                            ; Not a Hayes, so try CBX dialog.
  581.   reinput 10 MODIFY?              ; Look for CBX prompt.
  582.   if failure giveup               ; If not found, give up.
  583.   echo CBX dialing...             ; It's the CBX, tell the user.
  584.   output call 975551212\13        ; Dial the number.
  585.   pause 20                        ; Wait for call to complete.
  586.   :GOOD                           ; We got through, somehow.
  587.   echo Connected!                 ; Display a message.
  588.   connect                         ; Start terminal emulation.
  589.   hangup                          ; When done, drop DTR to hang up.
  590.  
  591.     Figure 10:   A Kermit Script That Works With Both Hayes and CBX Dialing
  592.  
  593. -------------------------------------------------------------------------------
  594.  
  595. This script works by issuing a Hayes command and looking for the OK response.
  596. If the OK response does not appear, then the script issues an ICS command
  597. instead.  For Hayes modems, the script dials the number, and then looks for the
  598. Hayes CONNECT response.  The full message should be CONNECT 1200 or CONNECT
  599. 2400.  Even though the dialup speed is 2.4 Kbit/s, the modem on the other end
  600. may have answered at 1200, in which case the Hayes will automatically fall back
  601. to that speed, and inform the software in its CONNECT message.  The "reinput"
  602. commands examine the previous material to see if it contained a "1200" or
  603. "2400", allowing Kermit to change its speed accordingly.  With some extra work,
  604. this script could be reworked into a dial command similar to the one shown
  605. previously, so that it could be used for dialing any desired number.
  606.  
  607. Finally, a script can contain looping constructs.  For instance, if we wanted
  608. Kermit to try dialing three times before giving up, we could write a script
  609. program containing the SET COUNT and IF COUNT statements (Fig. 11).
  610.  
  611. -------------------------------------------------------------------------------
  612.  
  613.  
  614.   set count 3                     ; Loop limit.
  615.   goto first                      ; Skip pause on first try.
  616.   :AGAIN                          ; Label for top of loop.
  617.   echo Trying again...            ; Tell the user what's happening.
  618.   pause 30                        ; Pause for 30 secs between calls.
  619.   :FIRST                          ; Label for first try.
  620.   dial 977654321                  ; Try dialing.
  621.   if success goto online          ; If it worked, let user take over.
  622.   if count goto again             ; Otherwise try again.
  623.   echo Try again later.           ; If too many tries, give message,
  624.   stop                            ; and stop.
  625.   :ONLINE                         ; Get here on successful connection.
  626.   echo Connected!                 ; Let user know.
  627.   connect                         ; Begin terminal emulation.
  628.   hangup                          ; Hang up when the user returns.
  629.  
  630.                     Figure 11:   A Script That Keeps Trying
  631.  
  632. -------------------------------------------------------------------------------
  633.  
  634. The basic principles of manual connection and of script construction
  635. illustrated by Kermit apply also to many other popular communications packages,
  636. though the form and and range of options available can vary dramatically.
  637.  
  638.  
  639. PROCOMM 2.2
  640.  
  641. ProComm 2.2 is a popular "shareware" communications package from DataStorm
  642. Technologies (Columbia, MD).  Like Kermit, it does not require a lengthy
  643. configuration or installation procedure.  After starting the program, you may
  644. begin terminal communications immediately, assuming the speed and parity are
  645. set appropriately.  The command Alt-F10 displays a help screen, and Alt-P
  646. allows the alteration of communications parameters and with the option to save
  647. them in a file so that ProComm starts up with the desired settings thereafter.
  648.  
  649. ProComm is perfectly suitable for "manual" use with the IBM switch.  It is also
  650. possible to configure ProComm for automatic dialing through the switch, using
  651. either its built-in dialer support or its script language.
  652.  
  653. To set up automatic dialing, type Alt-S, select (1) MODEM SETUP, and then set
  654. the following:
  655.  
  656.    1. Modem initialization string:  Just make it null (empty).
  657.  
  658.    2. Dialing command: "!~~~~~~~~~~call " (note the blank after "call").
  659.       The exclamation "!" is ProComm's notation for a carriage return
  660.       (CR), and the tilde "~" is used by ProComm to represent a 1/2 second
  661.       pause.  This command sends the required CR, pauses 5 seconds, and
  662.       then gives the CALL command.
  663.  
  664.    3. Connect string: "CALL COMPLETE" (only used for redialing)
  665.  
  666. For dialing out from the CBX, omit the connect string to disable redialing
  667. since there would be no connect string in that case.  This highlights the most
  668. basic difficulty in adapting software to the new environment.  The switch does
  669. not inform the software in any way -- not by message, not by modem signal
  670. transition -- when the connection has been made.  This fact, combined with the
  671. switch's built-in queuing for busy resources, renders useless the redial
  672. feature found in so many communications programs.
  673.  
  674. Having defined a dialing command for the CBX, now type Alt-D and add the
  675. relevant phone number to the dialing directory.  Then to dial a host, type
  676. Alt-D and select the number of its directory entry.  Once these commands are
  677. debugged, the configuration can be saved by answering Yes to the question in
  678. the menu.
  679.  
  680. Dialing is not reliable, however -- it just forges ahead without checking that
  681. valid responses are coming from the CBX.  If the CBX is slow in responding to
  682. the initial CR, the CALL command will be issued prematurely and ignored by the
  683. CBX.  Figure 12 shows a ProComm script that can be used to synchronize the
  684. call.
  685.  
  686. -------------------------------------------------------------------------------
  687.  
  688.  
  689.   %E1                           (Emulate a VT100)
  690.   %F"3"                         (2400 bps, even parity)
  691.   %U2                           (display carriage return as-is)
  692.   %U4                           (full duplex)
  693.   %T"^M"                        (send a carriage return)
  694.   %I"CALL, DISPLAY OR MODIFY?"  (wait for prompt)
  695.   %T"call 976543210^M"          (issue CALL command, followed by CR)
  696.   %T"~~~~~~~~~~~~~~~~~~~~~~^M"  (pause, then send carriage return)
  697.   %I"login:"                    (wait for the host's "login:" prompt)
  698.  
  699.               Figure 12:   A ProComm Script for Use with the CBX
  700.  
  701. -------------------------------------------------------------------------------
  702.  
  703. The script file can be created with an editor and saved with a filetype of
  704. .CMD, and executed using Alt-F5.  Unlike a Kermit script file, the ProComm
  705. script may not include comments.
  706.  
  707.  
  708. CROSSTALK XVI VERSION 3.61
  709.  
  710. Crosstalk XVI is a popular commercial communication package for the IBM PC
  711. family.  It is designed primarily to be used with modems, but it also allows
  712. direct connections.
  713.  
  714. To use Crosstalk in direct mode to dial out through the CBX, type "xtalk" to
  715. start the program, and then, after the logo screen disappears and the status
  716. screen appears, type one or two carriage returns until you get the "Command?"
  717. prompt on the bottom line.  At this point, use any of the two-letter commands
  718. listed on the top part of the screen to set the necessary communications
  719. parameters.  For example, when connecting to a DEC VAX, type:
  720.  
  721.   SP 1200   (Speed 1200 bps)
  722.   PA E      (Parity even)
  723.   DA 7      (Seven data bits)
  724.   DU F      (Duplex Full)
  725.   EM VT     (Emulate a VT100 terminal)
  726.  
  727. Then establish the connection as follows:
  728.  
  729.   GO LOCAL                   (Make the connection)
  730.                              (Type a carriage return)
  731.   CALL, DISPLAY OR MODIFY?   (Get CBX prompt)
  732.   call 976543210             (Type the call command)
  733.                              (Type a carriage return)
  734.   login:                     (Here's the VAX's login prompt)
  735.  
  736. You can get back to Crosstalk by typing its attention character, normally
  737. Escape, and you can redefine the attention character with the AT command.  Once
  738. you have got this procedure working, you can use the SA (save) command to save
  739. it in a file (for example, MYHOST, which is automatically created with the
  740. filetype .XTK) and it will appear in the startup menu, or you can run it at any
  741. time using the Crosstalk LOAD command.
  742.  
  743. Crosstalk also lets you set up command files for dialing different computers.
  744. A Crosstalk command file is most easily created by editing a previously saved
  745. .XTK file.  The trick is to replace the Hayes AT dialing commands with the
  746. switch's equivalents.  Relevant commands are:
  747.  
  748.   Aprefix                      (Remove the "Answer prefix")
  749.   NUmber   976543210           ("number" to dial for MYHOST)
  750.   DPrefix  |~~~~~~~~~~call     (dial prefix: send CR, pause, then "call ")
  751.   DSuffix  |                   (dial suffix: carriage return)
  752.   GO                           (dial the number)
  753.  
  754. The vertical bar "|" is Crosstalk's symbol for carriage return, and each tilde
  755. means to pause for one second.  Note that the dial prefix must have a space
  756. after the word "call".  A Crosstalk command file is similar to a ProComm dial
  757. entry and has the same drawback -- if the hard-coded pause interval is not long
  758. enough, then the "call" command will be sent before the CBX is ready for it.
  759. To circumvent this difficulty, you can write a Crosstalk script to synchronize
  760. and verify the call setup procedure (Fig. 13).
  761.  
  762. -------------------------------------------------------------------------------
  763.  
  764.  
  765.   go local                         (connect directly to ICS)
  766.   wait delay 10                    (wait one second)
  767.   reply |                          (send a carriage return)
  768.   wait string "MODIFY?"            (wait for prompt)
  769.   reply call 976543210|            (dial the number)
  770.   wait delay 200                   (pause 20 seconds)
  771.   reply |                          (send a carriage return to UNIX)
  772.   wait string "login:"             (wait for UNIX "login:" prompt)
  773.  
  774.                       Figure 13:   A Crosstalk XVI Script
  775.  
  776. -------------------------------------------------------------------------------
  777.  
  778. The easiest way to make a Crosstalk script file is to copy a command file to
  779. another file with filetype .XTS and then use an editor to replace the GO
  780. command with script commands.  A script may be executed at any time using the
  781. Crosstalk DO command.
  782.  
  783.  
  784. SMARTCOM II VERSION 2.2
  785.  
  786. Smartcom is a Hayes product for the IBM PC family designed for use with Hayes
  787. modems.  Fortunately, it also allows for direct connections, which are the
  788. "back door" into the CBX.  You cannot do automatic dialing of the CBX with
  789. Smartcom (except through a 244PC), because the only dialing devices it supports
  790. are those made by Hayes.
  791.  
  792. Smartcom II searches for a Hayes modem connected to one of the ports, but since
  793. your PC is now connected to a ROLMphone, the program eventually gives up with a
  794. message "Smartmodem not responding".  At that point, you can get into the main
  795. menu by pressing the F1 key.  Configuration is a rather involved affair: choose
  796. "2" from the main menu (Edit Set), then choose one of the predefined Setups
  797. (Set), then F1 back to the "Edit Set" menu, then choose "Parameters", and then
  798. specify that the connection type is DIRECT, and modify the speed, parity, and
  799. other communications parameters as required.  Then select "begin
  800. communication".  At this point, you may type carriage return to get the "CALL,
  801. DISPLAY OR MODIFY?" prompt, and type the desired "call" command.
  802.  
  803. The ICS dialog may be automated by the use of a "macro."  To define a macro you
  804. must visit the menus again: from the main menu select 2 (Edit Set), then from
  805. the Edit Set menu choose S (which Set to edit), and then choose the unused set
  806. X. Then select M to define a macro and then Z to assign it the label Z
  807. (automatic logon).  At this point Smartcom II presents you with a table, which
  808. you fill in (Fig. 14).
  809.  
  810. -------------------------------------------------------------------------------
  811.  
  812.  
  813.   MACRO DEFINITION                               Press F2 For Help
  814.  
  815.   Name Of Macro: Z - Automatic Logon                Set X - Unused
  816.   Time-out     Prompt       Data                           Send CR
  817.       0        0 (off)                                       YES
  818.      20       63 ("?")      call myhost                      YES
  819.      20       69 ("E")                                       NO
  820.       2       69 ("E")                                       YES
  821.      10       58 (":")                                       NO
  822.  
  823.                        Figure 14:   A SmartCom II Macro
  824.  
  825. -------------------------------------------------------------------------------
  826.  
  827. The columns read across, Wait this long (Time-out) to get this character
  828. (Prompt) from the remote system, and then if the desired character arrives or
  829. if the time limit expires, send this character string (Data), followed by a
  830. carriage return if (Send CR) is YES.  In the example, the first line waits no
  831. time for nothing, then sends nothing followed by a carriage return.  Then
  832. Smartcom waits up to 20 seconds for the question mark from the CBX's CALL,
  833. DISPLAY OR MODIFY? prompt.  Prompts can be single characters only, and are
  834. indicated by the decimal ASCII value.  When the prompt arrives (or the timer
  835. goes off) Smartcom sends the text "call myhost" followed by a carriage return.
  836.  
  837. In this example, we are showing a call to a local host rather than a dialout
  838. call, to illustrate an item of interest.  We want to wait for the "CALL
  839. COMPLETE" message before sending a carriage return to the host to get its
  840. "login:" prompt.  But Smartcom II macros only let us look for single
  841. characters, not words or phrases.  And the phrase "CALL COMPLETE" has two E's
  842. in it.  So the script waits up to 20 seconds for the first E (allowing time for
  843. call placement) and sends nothing.  Then it waits 2 seconds for E number two,
  844. responds with a carriage return, then waits 10 more seconds for the colon ":"
  845. from the "login:" prompt.
  846.  
  847. For dialing out, the switch does not give us the CALL COMPLETE indication, so
  848. the last three lines of the table would be omitted, and "myhost" would be
  849. replaced by a telephone number.
  850.  
  851. Once the table is filled in correctly and tested, it can be saved by typing ESC
  852. and then R (Record); it will appear on the Set X macro menu the next time you
  853. run Smartcom II.
  854.  
  855. Smartcom II is not the only package that restricts input matching to single
  856. characters.  VTERM III, from Coefficient Systems (New York City), works the
  857. same way.  In that package, scripts are assigned to function keys, which the
  858. user has to press, e.g.  
  859.  
  860.   Shift F1: <CR><W:?><P:1>call 976543210<CR><P:10>
  861.  
  862. Which means send a CR, Wait for a question mark (the one in "MODIFY?"), pause 1
  863. second, send the call command and a carriage return, and then Pause for 10
  864. seconds.
  865.  
  866.  
  867. SMARTCOM III VERSION 1.0A
  868.  
  869. Like Smartcom II, Smartcom III can be used with either Hayes modems or direct
  870. connections.  Before you can communicate, you have to go through a
  871. configuration process that is not entirely intuitive.  First, you must define
  872. an "Activity" and a "Connection."  Each has a menu and several submenus that
  873. must be traversed.  For each, choose New to create a new entry, and give it a
  874. name, go through the menus and make the appropriate choices, and then press F8
  875. to save it.
  876.  
  877. An Activity contains information that applies to the host or service you're
  878. connecting to: what kind of terminal to emulate, what the terminal settings
  879. should be, which file transfer protocol to use, how to set up your keyboard,
  880. etc.  For example, you might create an Activity called VAX, in which you
  881. emulate a VT-102 terminal in full duplex, and use the Kermit protocol for file
  882. transfer.  A Connection contains the data communication parameters: the
  883. communication port, speed, parity, data bits, etc.  The key item here is Type
  884. of Connection: you must specify Direct.  For example, you might create a
  885. Connection called CBX, which specifies Direct, COM1, 2400 bps, even parity, 7
  886. data bits.
  887.  
  888. Having created an Activity and a Connection, you can return to the main menu
  889. and select Initiate a Session.  Smartcom will give you menus of all the
  890. available Activities and Connections, and you must choose one from each.
  891. Having done all of this (it won't take more than half an hour!), you may now
  892. begin to communicate with the switch.  Type carriage return in the normal way,
  893. get the CALL, DISPLAY OR MODIFY? prompt, and you're on your way.  In the
  894. future, you can take advantage of the configuration work you've done by
  895. invoking the program with the Activity and Connection name on the command line,
  896. as in
  897.  
  898.   C>scom3 vax.cbx
  899.  
  900. Like Smartcom II, Smartcom III includes a large dialing directory, listing
  901. major services like Compuserve, Dow-Jones, The Source, MCI Mail, etc.
  902. Presumably, access to these services is one of the reasons you bought Smartcom.
  903. How can you continue to dial them from your new CBX phone?
  904.  
  905. Smartcom III includes a script language as well as a remarkable feature called
  906. "learned scripts".  When you turn on script learning (from the session menu),
  907. it will observe both what you typed in and the responses that come back.  It
  908. then translates the observed interactions into a program in Smartcom III's
  909. script language, SCOPE.  Figure 15 shows an example for logging into MYHOST
  910. through the CBX.
  911.  
  912. -------------------------------------------------------------------------------
  913.  
  914.  
  915.   { Smartcom III  Learned Script   7/19/88  7:28 PM }
  916.   TYPE KEY RETURN_KEY ;
  917.   WAIT FOR PROMPT "CALL, DISPLAY OR MODIFY?" , 10 ;
  918.   TYPE LINE "call myhost" ;
  919.   WAIT FOR PROMPT "CALL COMPLETE" , 20 ;
  920.   TYPE KEY RETURN_KEY ;
  921.   WAIT FOR PROMPT "login:" , 20 ;
  922.  
  923.                   Figure 15:   A SmartCom III Learned Script
  924.  
  925. -------------------------------------------------------------------------------
  926.  
  927. Note that Smartcom automatically discarded the lines (like "CALLING 74250")
  928. that did not evoke user typein, and it timed the responses.  The same script
  929. should work for dialing (substituting the phone number for "myhost".)  If the
  930. CALL COMPLETE message fails to appear within 20 seconds, the script will go on
  931. to the next statement.
  932.  
  933. How can this script be combined with our predefined Activities?  Just give the
  934. script the same name as the Connection that you use to get to that Activity, in
  935. our case "CBX".  Whenever you establish a "CBX" Connection, the script executes
  936. automatically, and dialing up your favorite service with Smartcom III is as
  937. painless with the CBX as it was with a Hayes modem.
  938.  
  939.  
  940. OPEN ACCESS II
  941.  
  942. Open Access II, from Software Products International (San Diego, CA), is one of
  943. those all-in-one packages for the IBM PC family -- spreadsheet, database, word
  944. processor, clock-calendar, and communications.  The packages we've looked at so
  945. far were intended only for communications, so as a last resort their users
  946. could always convert to another package if the CBX conversion posed
  947. insurmountable problems.  But when communications is only an ancillary function
  948. of a larger package, switching packages may not be an option.
  949.  
  950. The communication feature of Open Access II supports direct mode, as well as
  951. user-defined modem dialing sequences.  But these cannot be used right away.
  952. Rather, one must go through an intricate and time-consuming menu-driven
  953. configuration session.  But after sufficient effort, it can be made to work
  954. with the switch, at least in direct mode.  Here's how:
  955.  
  956. Select Communications from the main menu, then select Modem from the
  957. communications menu.  When it prompts you for a modem name, say NOMODEM.  Then
  958. select Format and set the desired speed, parity, data, and stop bits.  Then go
  959. back to the Modem menu and select Miscellaneous Parameters.  Be sure to set
  960. "Translate modem character" to No.  Now go back to the Communications menu and
  961. select the Service Menu.  Make a new service called, say, CBX.  Select the
  962. Format menu, and make all the format items agree with the modem formats (if
  963. they do not agree, the connection will not work).  Now go back to the Service
  964. menu and select the Miscellaneous Parameters menu.  Several important settings
  965. here are: Autodial No, Hangup on Exit No, Ignore CTS Yes, Ignore Linefeed Yes
  966. (if the latter is set to No, then the program will send CR LF whenever you type
  967. carriage return, and you will not be able to have a successful dialog with
  968. ICS).  Pop back up two levels to the Communications menu, select Terminal, and
  969. now you can interact with ICS.  Wasn't that easy?
  970.  
  971. Of course it wasn't.  But preserving the user's investment in an expensive
  972. multifunction package can be worth the extra effort.  In any case, if
  973. adaptation to the CBX's Interactive Call Setup dialog had not proved possible
  974. for Open Access II, then it would still have been possible to keep the package,
  975. but to use a separate package for communications, or to offer the user the more
  976. expensive 244PC ROLMphone alternative.
  977.  
  978.  
  979. Another Package, Another Trick
  980.  
  981. One package we looked at, VsCom, for use between IBM PCs and Wang VS systems,
  982. allows direct connections, user-defined dialing sequences, and scripts.  Direct
  983. connection worked fine on the first try.  The evaluation copy of this program
  984. came without a complete manual; script file information was not available, nor
  985. was a listing of what special characters were allowed in the dialing sequence,
  986. for instance to signify pauses.  Experimentation did not uncover a pause
  987. character.  The sample screen showed that "<CR>" stood for carriage return, so
  988. the following dialing string was used:
  989.  
  990. <CR>                                                            call myhost<CR>
  991.  
  992. The dialing string has to fit on one line, so the maximum number of spaces were
  993. inserted between the initial carriage return and the "call" command.  These
  994. serve as "padding," or time wasters, to give the switch time to issue its
  995. "CALL, DISPLAY OR MODIFY?" prompt before sending the "call" command.  Luckily,
  996. the switch ignores leading spaces, otherwise this trick would not have worked.
  997.  
  998.  
  999. Macintoshes, T-Switches, and DTR
  1000.  
  1001. The RS-232-C Data Terminal Ready (DTR) signal is sent from the PC to the
  1002. ROLMphone to let the CBX know that the PC ready to communicate.  This allows
  1003. software packages to request service by turning on the DTR signal, and to close
  1004. a connection by turning DTR off.  However, certain packages or PCs cannot
  1005. control their DTR signals.  For this reason, the switch's data lines may be
  1006. configured with "Forced DTR," which means that the switch will pretend the DTR
  1007. signal is always on, at the expense of software-controlled call establishment
  1008. and release.  The problem is that Forced DTR is not a user-settable parameter.
  1009. Rather, it must be configured by the CBX management, an administrative
  1010. procedure that entails a fee, the filling out of forms, and some days of
  1011. waiting for the request to be processed.  Furthermore, the whole concept is
  1012. intrinsically baffling to users.  Therefore, it was decided that all lines
  1013. should be configured the same, without Forced DTR.
  1014.  
  1015. But then what is to be done about devices that can't turn DTR on and off at
  1016. will?  There are two striking examples.  First is the Apple Macintosh, which is
  1017. quite popular at Columbia.  But the Mac's serial communications interface is
  1018. not RS-232-C, but rather an RS-422 device that is simulating RS-232-C.  This
  1019. interface does not provide any modem signals, in particular DTR.  Second is the
  1020. ever-popular T-switch (sometimes called an A-B switch): users who have a PC
  1021. connected to both a ROLMphone and some other device through a T-switch lose
  1022. their data connection as soon as they switch their device away from the phone.
  1023.  
  1024. Clearly, one does not want to submit a "move-and-change" order every time one
  1025. turns one's T-switch from A to B, or exchanges a PC for a Macintosh.  Our
  1026. solution to this problem was to build special RS-232-C adapters that go between
  1027. the phone and the user's cable.  These loop one of the phone's constant outputs
  1028. -- either Pin 9 (Positive DC Test Voltage) or Pin 5 (Clear to Send), depending
  1029. on the phone model -- back into the phone's DTR input.  These adapters are
  1030. called FOTs ("Fake Out Things"), Models A and B, shown in Figure 16.  The male
  1031. end connects to the phone, the female end to the user's cable.  The FOT is
  1032. analogous to a null modem, in that it tricks the phone into thinking a computer
  1033. is connected.  One might call it a "null computer."
  1034.  
  1035. -------------------------------------------------------------------------------
  1036.  
  1037.  
  1038.     Male       Female                           Male       Female
  1039.  
  1040.    FG  1----------1  (Frame Ground)
  1041.    TD  2----------2  (Transmitted Data)        FG  1----------1
  1042.    RD  3----------2  (Received Data)           RD  2----------2
  1043.   RTS  4----------4  (Request to Send)         TD  3----------3
  1044.   CTS  5----------5  (Clear to Send)          RTS  4----------4
  1045.   DSR  6----------6  (Dataset Ready)          CTS  5---+      5
  1046.    SG  7----------7  (Signal Ground)                   |
  1047.    CD  8----------8  (Carrier Detect)         DSR  6----------6
  1048.   DC+  9---+      9  (Test Voltage)                    |
  1049.            |                                   SG  7----------7
  1050.   DTR 20---+      20 (Data Terminal Ready)             |
  1051.    RI 22----------22 (Ring Indicate)           CD  8----------8
  1052.                                                        |
  1053.                                               DTR 20---+      20
  1054.                                                RI 22----------22
  1055.  
  1056.         Model A                                     Model B
  1057.  
  1058.                              Figure 16:   The FOT
  1059.  
  1060. -------------------------------------------------------------------------------
  1061.  
  1062. Once we discovered how to connect Macs to the phone, we found that all popular
  1063. Macintosh packages were able to use the CBX in direct mode, and some also in
  1064. dial or script mode, depending on the capabilities of the package (see Table
  1065. 1).
  1066.  
  1067.  
  1068. Hard Cases
  1069.  
  1070. WilsonLine, a product of the H.W. Wilson Company (Bronx, NY), is a CD-ROM
  1071. database package used primarily in libraries, which also dials out to a central
  1072. database service for updated information.  It is a turnkey system that performs
  1073. a unique function in a proprietary manner, and includes a non-customizable
  1074. communication feature.  Only a Hayes 300 or 1200 bps modem can be used.
  1075. Wilsonline cannot be used for direct computer connections, nor with non-Hayes
  1076. modems or with data switches.  Our libraries depend on this package.  For them,
  1077. the only solution is the costly 244PC, a ROLMphone which emulates a Hayes 1200
  1078. Smartmodem.
  1079.  
  1080. We also learned that certain "bank at home" products could not be made to work
  1081. with the CBX, except with a 244PC.  Packages like Chemical Bank Pronto, and
  1082. Citibank Direct Access only work with modems certified and approved by the
  1083. bank, and the IBM 9751 CBX is not on their list (nor, in all likelihood, are
  1084. any other data PBX's).  But other banking packages like Chase Manhattan
  1085. Spectrum can be used with "dumb" (nondialing) modems, and therefore also with
  1086. the CBX.
  1087.  
  1088.  
  1089. Summary
  1090.  
  1091. Your organization is installing a new digital voice/data switch.  If you have
  1092. any choice in the selection, you should look for features that will allow the
  1093. popular RS-232-C communications packages to continue working.  A
  1094. Hayes-compatible dialing language would be a good start, especially if it is
  1095. not an extra-cost option.  Also, as we've seen, some kind of call completion
  1096. indication is essential to the reliable operation of scripts.  This can be in
  1097. the form of a message, or the transition of the Carrier Detect modem signal
  1098. from low to high.
  1099.  
  1100. To prepare users of communication packages for conversion to the switch, first
  1101. find some way to explain to them why they won't be needing their modems any
  1102. more.  Be positive -- tell them they can take their modems home and dial in to
  1103. work from there.  If the switch claims to provide the Hayes dialing language,
  1104. test it with a few packages, preferably Smartcom II or III (if any package
  1105. knows how to exercise a Hayes modem, Smartcom should!).  If it works, you're
  1106. done.
  1107.  
  1108. If your switch has its own special dialing language, you'll have to go through
  1109. the same procedure we did.  Conduct a survey of your users to find out what
  1110. packages they are actually using.  Get copies of each package, along with the
  1111. manuals.
  1112.  
  1113. First find out if the package can be used in direct interactive mode.  This can
  1114. be tricky, because most packages are designed to be used with modems.  A PC
  1115. connected directly to a timesharing computer must be a relatively rare
  1116. phenomenon judging from the scant attention given to this setup by most package
  1117. manuals.  But this is the back door to the data switch, so you must persist
  1118. till you find it.  In packages like Smartcom and Open Access, you may find
  1119. yourself knee deep in menus before the magic door appears, but in almost every
  1120. case it's there.  Sometimes near the surface, sometimes deeply buried or
  1121. cleverly disguised.
  1122.  
  1123. All those prompts about modem initialization strings, dialing strings, dialing
  1124. prefixes and suffixes are ruses and red herrings, irrelevant to direct
  1125. connections.  Eradicate them if you can.  If you find a configuration item that
  1126. says "modem type," and one of the choices is "direct" or "no modem," then
  1127. you're home free.  Try the package interactively in this mode, and it should
  1128. work.
  1129.  
  1130. If the package appears not to support direct connections, you might still get
  1131. it to work with your switch provided you can supply the required RS-232-C modem
  1132. signals.  For example, if the software refuses to communicate unless it
  1133. receives the Carrier Detect (CD) signal from the modem, you can trick it by
  1134. feeding its own Data Terminal Ready (DTR) signal back into its CD signal (by
  1135. connecting pins 8 and 20 together in the PC end of the RS-232-C cable).
  1136.  
  1137. Then try the package's dial feature, if it has one.  It's nice to get this
  1138. working, because then the software package's dialing directory can be used to
  1139. make outgoing data calls through the switch, in the same way it can be used
  1140. with a modem.  This time, try replacing the dial initialization string or
  1141. prefix with the one used by your switch.  In the IBM 9751 CBX case, the
  1142. initialization string was a carriage return, and the dial prefix was the word
  1143. "call" followed by a space.  The dial suffix, if required, is normally a
  1144. carriage return.  In our case, we needed a pause after the initial carriage
  1145. return to give the switch time to issue its prompt.
  1146.  
  1147. Finally, try setting up a script, if the package has a script language.  This
  1148. will get your turnkey and pushbutton users off the ground, and it will allow
  1149. any unattended operations to continue unabated.  Some script languages are
  1150. straightforward, others are best understood by a devious mind.  In the latter
  1151. category come scripts of the "expect-send" variety (like Smartcom II), which
  1152. assume that something must be received before anything can be sent, and scripts
  1153. that only match single characters, rather than whole strings, from the input
  1154. stream (like Smartcom II or VTERM II).
  1155.  
  1156. Table 1 summarizes the results for the packages we looked at.  We found that
  1157. nearly all of them allow direct connections, and so can be made to work with
  1158. with IBM's CBX.  Getting the CBX's dialing to mesh with the package is somewhat
  1159. more problematic.  But in all cases, it seems that if the package has a script
  1160. language, and it supports direct-mode connections, then scripts can be written
  1161. to dial out from the CBX.  So the news is almost completely good.
  1162.  
  1163.  
  1164. Products Mentioned
  1165.  
  1166. The IBM 9750 Business Communication System is a product of IBM, 4900 Old
  1167. Ironsides Drive, Santa Clara, CA 95054.
  1168.  
  1169. CrossTalk XVI is a product of Microstuf Inc, 1000 Holcomb Woods Parkway,
  1170. Roswell, GA 30076.  There is now a newer product, Crosstalk Mk.4, from
  1171. DCA/Crosstalk Communications, same address.
  1172.  
  1173. Kermit is available for more than 300 different machines and operating systems
  1174. from Kermit Distribution, Columbia University Center for Computing Activities,
  1175. 612 West 115th Street, New York, NY 10025.
  1176.  
  1177. Open Access II is a product of Software Products International, 10240 Sorrento
  1178. Valley Road, San Diego, CA 92121.
  1179.  
  1180. PACX IV is a product of Gandalf Data, Inc., US office: 1020 South Noel Avenue,
  1181. Wheeling, IL 60090.
  1182.  
  1183. ProComm 2.2 is a shareware product from DataStorm Technologies, PO Box 1471,
  1184. Columbia, MD 65205.  There is also a newer product, ProComm Plus.
  1185.  
  1186. Smartcom II and III are products of Hayes Microcomputer Products Inc, 705
  1187. Westech Drive, Norcross, GA 30092.
  1188.  
  1189. VsCom is a product of M/H Group, 222 West Adams, Chicago, IL 60606.
  1190.  
  1191. VTERM III is a product of Coefficient Systems, 611 Broadway, New York, NY
  1192. 10012.
  1193.  
  1194. WilsonLine is a product of the H.W. Wilson Company, 950 University Avenue,
  1195. Bronx, NY 10452.
  1196.  
  1197. -------------------------------------------------------------------------------
  1198.  
  1199.                                        Operates with CBX using....
  1200.                                        Direct   DIAL     Script
  1201.     Package         Version  System    Connect  Command  Language
  1202.     Crosstalk XVI     3.61   IBM PC       Y        Y        Y
  1203.     Crosstalk Mk.4    1.01   IBM PC       Y        Y        Y
  1204.     Dialoglink        1.20   IBM PC       Y        Y        N
  1205.     Direct Access     ---    IBM PC       N        N        N
  1206.     Hyperaccess       3.11   IBM PC       Y        N        Y
  1207.     MS-Kermit         2.31   IBM PC       Y        N        Y
  1208.     Open Access       II     IBM PC       Y        N        N
  1209.     PC-Plot           3.601  IBM PC       Y        N        N
  1210.     PC-TalkIII        ---    IBM PC       Y        N        N
  1211.     ProComm           2.2    IBM PC       Y        Y        Y
  1212.     Pronto            ---    IBM PC       N        N        N
  1213.     Smartcom II       2.2    IBM PC       Y        N        Y
  1214.     Smartcom III      1.0A   IBM PC       Y        N        Y
  1215.     Spectrum          2.1    IBM PC       Y        N        N
  1216.     VsCom             4.5    IBM PC       Y        Y        N
  1217.     VTERM III         1.2    IBM PC       Y        Y        Y
  1218.     Wilsonline        1.19   IBM PC       N        N        N
  1219.     ZCOMM             3/88   IBM PC       Y        Y        Y
  1220.     MacKermit         0.9    Macintosh    Y        N        N
  1221.     MacTerminal       2.2    Macintosh    Y        N        N
  1222.     Microphone II     2.0    Macintosh    Y        Y        Y
  1223.     Red Ryder         10.0   Macintosh    Y        N        Y
  1224.     VersaTerm-PRO     2.00   Macintosh    Y        Y        Y
  1225.     Kermit-65         3.81   Apple II     Y        N        N
  1226.     Kermit-80         4.09   CP/M systems Y        N        N
  1227.     Xmodem et al      ---    CP/M, MS-DOS Y        N        N
  1228.     CX                ---    DECmate      Y        N        N
  1229.     Easycom           ---    DECmate      Y        N        Y
  1230.     C-Kermit          4E     UNIX, VMS    Y        N        Y
  1231.     tip               ---    UNIX         Y        Y        N
  1232.     cu                ---    UNIX         Y        Y        N
  1233.     UUCP              ---    UNIX         Y        N        Y
  1234.     Kermit-11         3.58   DEC PDP-11   Y        Y        Y
  1235.     Kermit-20         4.2    DECSYSTEM20  Y        N        Y
  1236.     Kermit-32         3.3    DEC VAX/VMS  Y        N        N
  1237.     ("---" means version number not announced or relevant)
  1238.  
  1239.                           Table 1:   Package Summary
  1240.  
  1241. -------------------------------------------------------------------------------
  1242.  
  1243.  
  1244. Glossary
  1245.  
  1246. 244PC - A four-line data-equipped ROLMphone that includes a Hayes AT command
  1247. language interpreter.
  1248.  
  1249. ASCII - American Standard Code for Information Interchange, ANSI X3.4-1977.
  1250. The 7-bit code used by most asynchronous terminals and personal computers for
  1251. character storage and transmission.
  1252.  
  1253. CBX - Computerized Branch Exchange, a family of digital voice/data private
  1254. branch exchanges manufactured by Rolm and IBM.
  1255.  
  1256. CR - Carriage Return, ASCII character 13.
  1257.  
  1258. CTS - Clear To Send, an RS-232-C signal sent on pin 5 of the standard 25-pin
  1259. connector by a modem to a computer or terminal, indicating that the computer or
  1260. terminal has permission to send data to the modem.
  1261.  
  1262. DTMF - Dual Tone Multi-Frequency (Touch Tone).
  1263.  
  1264. DTR - Data Terminal Ready, an RS-232-C signal sent on pin 20 of the standard
  1265. 25-pin connector by a computer or terminal to a modem, indicating that the
  1266. computer or terminal is online.
  1267.  
  1268. Host - A computer capable of supporting multiple simultaneous interactive
  1269. users.
  1270.  
  1271. ICS - Interactive Call Setup, the set of prompts and commands provided to the
  1272. data user by the IBM 9751 CBX.
  1273.  
  1274. LDS-125 - A limited distance modem used with the Gandalf PACX IV data PBX.
  1275.  
  1276. LF - Linefeed, ASCII character 10.
  1277.  
  1278. PACX - The Gandalf Private Automated Computer Exchange, a data switch.
  1279.  
  1280. PBX - Private Branch Exchange, a generic term for any device that switches
  1281. voice or data calls.
  1282.  
  1283. PC - Personal computer.
  1284.  
  1285. ROLMlink - The proprietary protocol used between the ROLMphone and the IBM 9751
  1286. CBX, allowing simultaneous transmission of voice and RS-232-C data over a
  1287. single pair of telephone wires.
  1288.  
  1289. ROLMphone - A digital telephone for use with the IBM 9751 CBX.  When equipped
  1290. with the data option, capable of simultaneous voice and data connection.
  1291.  
  1292.  
  1293. Biographies
  1294.  
  1295. Christine Gianone is Kermit Administrator of Columbia University's Center for
  1296. Computing Activities (CUCCA); Frank da Cruz is CUCCA's Senior Planning Officer
  1297. for Networks, and author of Kermit, A File Transfer Protocol.  Chris and Frank
  1298. are also data communications instructors in Columbia's Division of Special
  1299. Programs, and co-authors of various articles and a forthcoming book on data
  1300. communications software and protocols.
  1301.  
  1302.  
  1303.  
  1304.                                 List of Figures
  1305.    Figure 1:   The Gandalf PACX Data PBX                                      1
  1306.    Figure 2:   A Traditional Modem Connection                                 1
  1307.    Figure 3:   Acoustic vs. Direct-Connect Modems                             1
  1308.    Figure 4:   Dialing Out from the IBM Switch                                2
  1309.    Figure 5:   MS-DOS Kermit Direct Connection to CBX                         3
  1310.    Figure 6:   MS-DOS Kermit Script for Dialing Out from the CBX              3
  1311.    Figure 7:   Taking Advantage of CALL COMPLETE                              3
  1312.    Figure 8:   Allowing for Local and Dialout Connections                     3
  1313.    Figure 9:   Defining a New Kermit Command                                  3
  1314.    Figure 10:   A Kermit Script That Works With Both Hayes and CBX Dialing    3
  1315.    Figure 11:   A Script That Keeps Trying                                    4
  1316.    Figure 12:   A ProComm Script for Use with the CBX                         4
  1317.    Figure 13:   A Crosstalk XVI Script                                        4
  1318.    Figure 14:   A SmartCom II Macro                                           5
  1319.    Figure 15:   A SmartCom III Learned Script                                 5
  1320.    Figure 16:   The FOT                                                       6
  1321.  
  1322.  
  1323.  
  1324.                                 List of Tables
  1325.    Table 1:   Package Summary                                                 7
  1326.