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

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