Communications ToolBox: Difference between revisions
Chairman888 (talk | contribs) Added much detail on the implementation, release/distribution challenges, and CommToolbox's role in the first Email from Space. |
|||
Line 1: | Line 1: | ||
{{distinguish|text=the Program-to-Program Communications Toolbox, part of [[Apple Events]]}} |
{{distinguish|text=the Program-to-Program Communications Toolbox, part of [[Apple Events]]}} |
||
The '''Communications Toolbox''', generally shortened to ''' |
The '''Communications Toolbox''', generally shortened to '''CommToolbox''' or '''CTB''', was a suite of [[application programming interface]]s, [[Library (computing)|libraries]] and [[device driver]]s for the [[classic Mac OS]] that implemented a wide variety of [[Serial communication|serial]] and [[Computer network|network]] communication protocols, as well as file transfer protocols and terminal emulations. |
||
Using the CTB, one could write an [[Application software|application]] that would seamlessly work over [[AppleTalk]], a [[modem]] or any variety of other connections. Developers could also write plug-in communications modules known as "Tools", allowing any CTB-aware application to use that connection method. |
Using the CTB, one could write an [[Application software|application]] that would seamlessly work over [[AppleTalk]], a [[modem]] or any variety of other connections, transfer files using XMODEM, Kermit or other file transfer protocols, and provide DEC VT102, VT220, and other terminal emulation services.. Developers could also write plug-in communications modules known as "Tools", allowing any CTB-aware application to use that connection method. |
||
CTB was notoriously slow and buggy,<ref>Mark Anbinder, [http://tidbits.com/article/3280 "IE To The Rescue"], ''TidBITS'', 13 January 1992</ref> and received mixed support from developers.<ref>[http://www.pascal-central.com/ingemars-corner.html "Ingemar's Corner], 25 December 2002</ref> Examples of applications using it for simple tasks were common, but many target uses, like [[terminal emulator]]s, almost always ran faster when designed to target a single connection type and avoid the CTB. |
CTB was notoriously slow and buggy,<ref>Mark Anbinder, [http://tidbits.com/article/3280 "IE To The Rescue"], ''TidBITS'', 13 January 1992</ref> and received mixed support from developers.<ref>[http://www.pascal-central.com/ingemars-corner.html "Ingemar's Corner], 25 December 2002</ref> Examples of applications using it for simple tasks were common, but many target uses, like [[terminal emulator]]s, almost always ran faster when designed to target a single connection type and avoid the CTB. |
||
==Description== |
==Description== |
||
The CTB was perhaps one of the first implementations of [[shared library|shared libraries]] on the early Mac OS. Applications would find installed tools at launch time. In fact, applications could automatically rediscover newly installed tools without having to quit and relaunch. |
|||
The CTB was based on a [[shared library]] concept in an era when the Mac OS did not include a shared library system. Instead, the CTB wrote its own driver manager layer, the Communications Resource Manager. The Resource Manager was responsible for installing and managing the various drivers, or "Tools" that provided various functions within the CTB system.{{sfn|Inside|1991|p=3}} There were three primary types of Tools, each with their own associated Manager: the Connection Manager handled the communications drivers that opened channels to remote services, the Terminal Manager managed Tools that implemented the character conversion and command string interpretation needed to support any sort of [[terminal emulator]], and the File Transfer Manager did the same for any sort of [[file transfer protocol]].{{sfn|Gaspar|1990}} |
|||
The CTB API's consisted of 4 managers: |
|||
⚫ | Applications could use |
||
* Communications Resource Manager (CRM) |
|||
⚫ | |||
* Connection Manager (CM) |
|||
* File Transfer Manager (FTM) |
|||
* Terminal Manager (TM) |
|||
The CRM provided the first centralized repository to register and enumerate serial devices. Early Mac's only had two serial ports and with the later Mac's allowing expandability including serial port cards, the CRM filled a critical hole in the Mac OS software architecture. |
|||
The Connection, File Transfer and Terminal Manager's all worked with "tools" which were dynamically loaded code modules providing the interface between the Manager-specific API and the code implementing the particular functionality. In this manner, an application could be written "agnostically" without implementation-specific knowledge of any particular data connection, file transfer, or terminal emulation protocols.{{sfn|Inside|1991|p=3}} In addition, these tools also provided a set of system-wide standard UI implementations that could be automatically invoked and used for figuration. |
|||
Connection Tools handled the communications drivers that opened channels to remote services, implementing basic functionality such as opening/closing a connection, reading/writing data, as well as callbacks to implement a user interface. |
|||
Terminal Tools implemented the character conversion and command string interpretation needed to support any sort of [[terminal emulator]], and would be responsible for handling rendering into a [[QuickDraw|QuickDraw GrafPort]], user interactions including copying text out of the terminal buffer, and managing keystrokes to send terminal-specific control strings. |
|||
File Transfer Tools implemented all of the underlying implementation details involved with file transfers as well as providing callbacks to implement a user interface.{{sfn|Gaspar|1990}} |
|||
⚫ | Applications could use either a subset or all of the CTB Managers. A typical terminal emulator application would use all of them, connecting a Connection Tool selected in the Connection Manager to Terminal Tool in the Terminal Manager, and then periodically using a File Transfer Tool in the File Transfer Manager on user request. Such was the case for common terminal emulators like [[VersaTerm]] and [[MacTerminal]].<ref name="tele">Mark Anbinder, [http://tidbits.com/article/3382 "TelePort Capabilities"], ''TidBITS'', 23 September 1991</ref> However, another application might use only one of these, say the Connection Manager to set up communications. [[QuickMail]] and [[Eudora Internet Mail Server|Eudora]] are well-known examples.<ref>Adam Engst, [http://tidbits.com/iskm/iskm3html/pt3/ch14/ch14a.html "Shell Account Enhancements"] {{Webarchive|url=https://web.archive.org/web/20121006014227/http://tidbits.com/iskm/iskm3html/pt3/ch14/ch14a.html |date=2012-10-06 }}, Internet Starter Kit for Macintosh, 1996, Chapter 14</ref> Applications typically used the GUI elements supplied by the Managers to handle user interaction, but could also enumerate the tools on their own to provide a custom GUI.{{sfn|Gaspar|1990}} |
||
Perhaps the best known Tool was the Apple Modem Tool, which provided the serial communications drivers as well as a system for storing [[Hayes command set|setup commands]]. This was during an era where there was a proliferation of different modem vendors, each with subtly and not-so-subtly different [[AT command]] strings needed for configuration. When a connection was initiated using the Modem Tool, the link to the modem was opened, commands sent to it, and the link established by dialling. The Apple Modem Tool faced challenges with keeping with the rapidly changing modem landscape with needing to track higher speeds and new features being regularly introduced by modem vendors. |
|||
⚫ | Providing CTB updates in general was also a challenge as the CTB development was, at first, not part of the main System Software effort, but rather part of the Networking and Communications division. When a 1.5 version addressing some of the problems was released in 1993, even finding it proved difficult.<ref>Adam Engst, [http://tidbits.com/article/2368 "Apple Modem Tool 1.5"], ''TidBITS'', 25 October 1993</ref> A further update was needed to support higher speeds when 28kbit/s modems become common.<ref>[http://support.apple.com/kb/TA35499?viewlocale=en_US "What is the maximum throughput of the Apple Modem Tool?"], Apple Computer, 17 May 1996</ref> |
||
Some of the other Apple provided tools included the simple Serial Tool and AppleTalk Tools using [[AppleTalk]]'s Apple Data Stream Protocol as additional connection methods, the TTY and VT102 Tools for terminal emulation, and the Text and [[XModem]] tools for file transfers.<ref>See various sections of ''Inside the Comm Toolbox''</ref> |
|||
Third party tools were common for supporting connections, including the TelePort modem which plugged into the [[Apple Desktop Bus]] and thus required custom drivers,<ref name=tele/> Apple's own [[X.25]] and [[ISDN]] tools, and a variety of other examples. |
Third party tools were common for supporting connections, including the TelePort modem which plugged into the [[Apple Desktop Bus]] and thus required custom drivers,<ref name=tele/> Apple's own [[X.25]] and [[ISDN]] tools, and a variety of other examples. |
||
CommToolbox was an important part of the DTO-1208 experiment onboard the Space Shuttle [[Space Shuttle Atlantis|Atlantis]] which saw the first email from space in 1991. The equipment set-up was a backlit Mac Portable using a fax modem operating in half duplex mode over normal air-to-ground voice links. The communications software used was a specially modified version of [[AppleLink]] that used the CommToolbox Connection Manager (instead of directly accessing serial ports) and a custom Connection Tool written pro bono by three Apple engineers in their spare time to hide the half-duplex nature of the air-to-ground link from the application (which was expecting a full-duplex connection). |
|||
==References== |
==References== |
Revision as of 02:12, 25 April 2022
The Communications Toolbox, generally shortened to CommToolbox or CTB, was a suite of application programming interfaces, libraries and device drivers for the classic Mac OS that implemented a wide variety of serial and network communication protocols, as well as file transfer protocols and terminal emulations.
Using the CTB, one could write an application that would seamlessly work over AppleTalk, a modem or any variety of other connections, transfer files using XMODEM, Kermit or other file transfer protocols, and provide DEC VT102, VT220, and other terminal emulation services.. Developers could also write plug-in communications modules known as "Tools", allowing any CTB-aware application to use that connection method.
CTB was notoriously slow and buggy,[1] and received mixed support from developers.[2] Examples of applications using it for simple tasks were common, but many target uses, like terminal emulators, almost always ran faster when designed to target a single connection type and avoid the CTB.
Description
The CTB was perhaps one of the first implementations of shared libraries on the early Mac OS. Applications would find installed tools at launch time. In fact, applications could automatically rediscover newly installed tools without having to quit and relaunch.
The CTB API's consisted of 4 managers:
- Communications Resource Manager (CRM)
- Connection Manager (CM)
- File Transfer Manager (FTM)
- Terminal Manager (TM)
The CRM provided the first centralized repository to register and enumerate serial devices. Early Mac's only had two serial ports and with the later Mac's allowing expandability including serial port cards, the CRM filled a critical hole in the Mac OS software architecture.
The Connection, File Transfer and Terminal Manager's all worked with "tools" which were dynamically loaded code modules providing the interface between the Manager-specific API and the code implementing the particular functionality. In this manner, an application could be written "agnostically" without implementation-specific knowledge of any particular data connection, file transfer, or terminal emulation protocols.[3] In addition, these tools also provided a set of system-wide standard UI implementations that could be automatically invoked and used for figuration.
Connection Tools handled the communications drivers that opened channels to remote services, implementing basic functionality such as opening/closing a connection, reading/writing data, as well as callbacks to implement a user interface.
Terminal Tools implemented the character conversion and command string interpretation needed to support any sort of terminal emulator, and would be responsible for handling rendering into a QuickDraw GrafPort, user interactions including copying text out of the terminal buffer, and managing keystrokes to send terminal-specific control strings.
File Transfer Tools implemented all of the underlying implementation details involved with file transfers as well as providing callbacks to implement a user interface.[4]
Applications could use either a subset or all of the CTB Managers. A typical terminal emulator application would use all of them, connecting a Connection Tool selected in the Connection Manager to Terminal Tool in the Terminal Manager, and then periodically using a File Transfer Tool in the File Transfer Manager on user request. Such was the case for common terminal emulators like VersaTerm and MacTerminal.[5] However, another application might use only one of these, say the Connection Manager to set up communications. QuickMail and Eudora are well-known examples.[6] Applications typically used the GUI elements supplied by the Managers to handle user interaction, but could also enumerate the tools on their own to provide a custom GUI.[4]
Perhaps the best known Tool was the Apple Modem Tool, which provided the serial communications drivers as well as a system for storing setup commands. This was during an era where there was a proliferation of different modem vendors, each with subtly and not-so-subtly different AT command strings needed for configuration. When a connection was initiated using the Modem Tool, the link to the modem was opened, commands sent to it, and the link established by dialling. The Apple Modem Tool faced challenges with keeping with the rapidly changing modem landscape with needing to track higher speeds and new features being regularly introduced by modem vendors.
Providing CTB updates in general was also a challenge as the CTB development was, at first, not part of the main System Software effort, but rather part of the Networking and Communications division. When a 1.5 version addressing some of the problems was released in 1993, even finding it proved difficult.[7] A further update was needed to support higher speeds when 28kbit/s modems become common.[8]
Some of the other Apple provided tools included the simple Serial Tool and AppleTalk Tools using AppleTalk's Apple Data Stream Protocol as additional connection methods, the TTY and VT102 Tools for terminal emulation, and the Text and XModem tools for file transfers.[9]
Third party tools were common for supporting connections, including the TelePort modem which plugged into the Apple Desktop Bus and thus required custom drivers,[5] Apple's own X.25 and ISDN tools, and a variety of other examples.
CommToolbox was an important part of the DTO-1208 experiment onboard the Space Shuttle Atlantis which saw the first email from space in 1991. The equipment set-up was a backlit Mac Portable using a fax modem operating in half duplex mode over normal air-to-ground voice links. The communications software used was a specially modified version of AppleLink that used the CommToolbox Connection Manager (instead of directly accessing serial ports) and a custom Connection Tool written pro bono by three Apple engineers in their spare time to hide the half-duplex nature of the air-to-ground link from the application (which was expecting a full-duplex connection).
References
- Citations
- ^ Mark Anbinder, "IE To The Rescue", TidBITS, 13 January 1992
- ^ "Ingemar's Corner, 25 December 2002
- ^ Inside 1991, p. 3.
- ^ a b Gaspar 1990.
- ^ a b Mark Anbinder, "TelePort Capabilities", TidBITS, 23 September 1991
- ^ Adam Engst, "Shell Account Enhancements" Archived 2012-10-06 at the Wayback Machine, Internet Starter Kit for Macintosh, 1996, Chapter 14
- ^ Adam Engst, "Apple Modem Tool 1.5", TidBITS, 25 October 1993
- ^ "What is the maximum throughput of the Apple Modem Tool?", Apple Computer, 17 May 1996
- ^ See various sections of Inside the Comm Toolbox
- Bibliography
- (Inside), "Inside the Macintosh Communications Toolbox", Apple Computer, 1991
- Don Gaspar, "Macintosh Communications Toolbox", Dr. Dobbs, December 1990
- Further reading
- "Communications Tools", introduction to the CTB with many images.