═══ 1. Help for Serial Stream Lexical Options ═══ When COMscope is in the lexical display mode each stream direction (column) can be configured to filter and/or process the data as follows: 1. Data display flow can be caused to break a display "line" and begin to display characters on the next "line" (start a "new-line"). 2. The character that is to cause a "new-line" can be defined. 3. Lines" that do not contain displayable data can skipped. 4. One direction stream (column) can be synchronized to the other stream. 5. Lines that are too long to fit within the display colunm width can be made to wrap to the next line. 6. Filters can be applied to each character displayed. The Filters that are avialable are: a. Alphabetical character exclusion (e.g., A,B, or A,b). b. Number character exclusion (e.g., 1,2). c. Punctuation character exclusion(e.g., $, %). d. Non-printable character exclusion (e.g., , ). Any filter can be enabled in any combination. In addition, a character mask can be defined. When filtering is enabled the defined mask character will be ANDed with the stream character before it is displayed. ═══ 2. Help for Serial Stream Display Format ═══ There are two serial stream display formats available: 1. Time-relational In this mode the serial stream is displayed with the receive and transmit streams on alternating horizontal lines. This type of display shows timing relationships between the transmit and receive serial streams. 2. Lexical In this mode the serial stream is displayed in two columns, the transmitted character in one column (left) and the received characters in the other (right). You can press the F8 key to toggle between these two display formats, or you can select the Options | Stream Display Format menu item and select either Lexical or Time-relational. Note: When displaying a captured data stream and any synchronization is selected in the lexical display format, toggling between display formats will cause the new display format to be synchronized with the previous display. For example, a character that is displayed as the first character in the time-relational format display will become the first character displayed in the lexical format. Related Information: o Time-relational Display Modes o Lexical Display Modes ═══ 2.1. Help for Time-relational Display Format ═══ The time-relational display format has two user selectable modes: 1. Xon or Xoff characters detected in the stream can be high-lighted. Whenever Transmit Xon/Xoff handshaking is enabled, and either of the defined Xon or Xoff characters are read from the device, they are marked by the device driver with special tracking information. When Receive Xon/Xoff handshaking is enabled the device driver uses the Transmit Byte Immediate function to transmit the currently defined Xon or Xoff character whenever the number of characters in the input buffer crosses a monitored threshold. The device driver adds special tracking information to any character that is transmitted through the Transmit Byte Immediate function. Device driver supplied tracking information allows COMscope to take special action on any character, when required. Enabling this feature causes these specially marked characters to be displayed in "reverse" video. 2. The display can be compressed. Normally each character to be displayed will be placed on the screen at the next consecutive character position. In the compressed mode any character that is read from the device (received) immediately following a character that was written to the device (transmitted), will be placed (displayed) at the same horizontal character position as the transmitted character. Example: The stream A T & F & D 2 S 0 = 1OK OK A T & F & D 2 S 0 = 1 +++A/ would be compressed to: AT&F&D2S0=1OK OK AT&F&D2S0=1 +++A/ ═══ 2.2. Help for Lexical Display Format ═══ The lexical display mode is primarily intended to display ASCII data, and there are a number of user selectable options to support this intention. The following modes are available: 1. A "new-line character can be defined. Enabling this feature causes the display to be "line" oriented. When the display is "line" oriented the following features are available: a. Lines that contain no displayable characters can be skipped. b. Lines from one stream direction can be synchronized to lines in the other direction. c. Lines that are too long to fit in the current column width can be made to "wrap" to the next line(s). 2. The following character sets can be filtered from the display: a. Alphabetical b. Numerical c. Punctuation d. Non-printable characters 3. A bit mask to be ANDed with all stream characters can be defined. ═══ 3. Help for Display Color Selection ═══ Background and foreground colors for the Status bar at the bottom of the window and for all stream displays are user selectable. To set the color options for any screen area place the pointer in the area you want to change and press mouse button two. Select the required color menu item from the pop-up menu. ═══ Help for Display Color Dialog ═══ Click on a radio button in the a Foreground group to select a color for the text of the display element described in the top line of the dialog box. Click on a radio button for a contrasting color from the a Background group to select a background (blank screen color) for the display element described in the top line of the dialog box. Each color group has an Auto push button. If you click on one of these buttons a color contrasting with the color selected in the opposite group will be selected for you. ═══ 4. Help for Keys ═══ There are five function keys used by COMscope. Use: F3: to close COMscope. F4: to "toggle" viewing and scrolling of the I/O data stream capture buffer. F5: to "toggle" capturing of the I/O data stream. F6: to "toggle" "real-time" display of the I/O data stream. F7: to "toggle" the status bar message beep. F8: to "toggle" the display mode between time-relational and lexical display formats. F9: to "toggle" the I/O data stream display font style between ASCII and Hexadecimal. When the display is in the column mode pressing the F9 key will cause both the transmit and the receive columns to switch fonts. If they are different, they will remain different, but be reversed. F10: to "toggle" the font size displayed. F11: to cause all active status displays for "this" COMscope session to be surfaced (placed in front of all other windows on the desktop). F12: to cause all active status displays and all COMscope sessions to be surfaced. Note: Surfacing multiple COMscope sessions is only possible when the /T switch was on the COMscope command line or in the Parameters: field of a COMscope object (icon). If you have started COMscope sessions with different IPC server names, only those COMscope sessions with the same server name will be surfaced. There is one other "key" function used by COMscope. When a device is active the user can select Transmit Next Keystroke from the Device | Control menu. When this item is selected, the next keystroke or the next "ALT-NUMKEYPAD" key combination will be transmitted. Any key except the "ENTER" and "BACKSPACE" keys on the alphanumeric portion of the keyboard, including shifted characters, can be transmitted (one character at a time) by pressing the appropriate key (plus shift key, if required) after selecting Transmit Next Keystroke. Any character value can be transmitted after selecting Transmit Next Keystroke by pressing, and holding down, the "ALT" key, pressing and releasing up to three numeric keys on the numeric portion of the keyboard (ten-key pad), then releasing the "ALT" key. Examples: Pressing ALT(3,2) will cause the value 32 (space or 0x20) to be transmitted. Pressing ALT(2,5,5) will cause the value of 255 (0xFF) to be transmitted. Pressing ALT(0) will cause the value of zero (NUL or 0x00) to be transmitted. Pressing ALT(1,3) will cause the value 13 (carriage return or 0x0D) to be transmitted. Note: If any hardware output handshaking is enabled and transmitting is stopped because of any inactive handshake signal the keystroke, or combination of keystrokes, will not be transmitted until the appropriate signal, or signals, become active. ═══ Help for Modem Control Signals ═══ Select the On button for a modem output signal to activate that signal. Select the Off button for a modem output signal to deactivate that signal. If a signal group is disabled you will be unable to change the state of that signal. The RTS group will be disabled if RTS Input Handshaking or RTS Toggling on Transmit is enabled. The DTR group will be disabled if DTR Input Handshaking is enabled. The OUT1 group will be enabled only if the COMi extension Accept Extended Modem Controls is enabled. ═══ 5. Help for COMscope ═══ COMscope is closely integrated with the COMi Asynchronous Serial Device Driver and can be used to access, configure, monitor, and control any COM port to be controlled by the COMi device driver. Use COMscope to monitor communications activity and status of COMi serial devices, including all states of the device and device driver, and the device I/O stream. Related Information: o Selecting Serial Device to Monitor o Controlling Monitored Device o Configuring Monitored Device o Capturing I/O Stream o Monitoring Device Status o Monitoring I/O Stream o Viewing Captured I/O Stream o Saving Captured I/O Stream Data o Loading Saved Captured I/O Stream Data o COMscope Command Line Options You can also use COMscope to install and/or edit COMi controlled serial device initialization parameters. COMi Device Driver Installation Information: o Installing a Serial Device o Editing a Serial Devices Start-up Configuration ═══ 5.1. Loading Saved Captured I/O Stream ═══ Load a previously saved capture buffer by: 1. Select File 2. Select either Load Data You cannot load a data file when capturing is in progress. You must first stop serial stream capturing. ═══ 5.2. Saving Captured I/O Stream ═══ There are two ways to save data captured by COMscope. You can save existing data in the capture buffer, or you can cause captured data to be written to disk each time the capture buffer becomes full. To save data in the capture buffer: 1. Select File 2. Select either Save Data or Save Data As Serial stream data cannot be saved using this method while capturing is in progress. You must first stop serial stream capturing, then selecting File | Save Data To save data as it is captured: 1. Select Options 2. Select Capture Buffer Processing... One of the options in the Capture Buffer Processing dialog will enable capturing of the serial stream to a series of files. If this option is selected when you select the OK button, you will be prompted for a file "root" name to save to. The file dialog will "suggest" the last root file name and path supplied by the user, if any. If the file name includes an extension of less than four characters, that extension will be replaced with "001". If the file name has an extension of more than three characters, or no extension, the extension "001' will be appended to the file name. If the file name has an extension that represents a hexadecimal number, that number will be used as the three character extension for the first file written. In all cases, each subsequent file written will have a three character extension that represents a hexadecimal number one higher than the previously written file. Examples: 1. The file name CAPTURE will cause the series CAPTURE.001, CAPTURE.002, CAPTURE.003, etc. to be written each time the capture buffer fills up. 2. The file name CAPTURE.079 will cause the series CAPTURE.079, CAPTURE.07A, CAPTURE.07B, etc. to be written each time the capture buffer fills up. 3. The file name CAPTURE.DATA.001 will cause the series CAPTURE.DATA.001, CAPTURE.DATA.002, CAPTURE.DATA.003, etc. to be written each time the capture buffer fills up. This option can be enabled and/or disabled while serial stream capturing is enabled. Once this options is enabled, the next time the capture buffer fills, a new file will be written to disk. If the number of files written exceeds 0xFFF the sequence numbering will be started over at "000". If the disk the files are being written to fills up, capturing will be aborted. ═══ 5.3. Configuring Monitored Device ═══ COMscope can be used to configure a COM port, even if that port has been opened by another application. All parameters changed by COMscope will have the same effect on a port as if any other application set those parameters. The user can use COMscope to set all parameters that an application can set. To configure an active COM port: 1. Select Device 2. Select Protocol 3. Select one of the following: o Baud Rate... o Line Protocol... o Time-outs... o Handshaking... o Stream Filters... o FIFO Control... Related Information: o Baud Rate o FIFO Processing o I/O Stream Filters o Handshaking o Line Characteristics o Time-out ═══ 5.4. Controlling Monitored Device ═══ COMscope can be used to control a COM port, even if that port is in use by another application. Any actions taken via COMscope will have the same effect on a device as if another accessing application applied that action. To control an active COM port: 1. Select Device 2. Select Control 3. Select one of the following: o Select Transmit Next Keystroke to cause the next keystroke, or ALT-NUMKEYPAD combination of keystrokes, to be transmitted via the "Transmit Byte Immediate" DosDevIOCtl function. o Select Force Xon/Xoff to force the device driver behave as if one of those characters was received. Transmit Xon/Xoff handshaking must be enabled for these commands to have an effect on the device driver. o Select Transmit Xon/Xoff Now! to cause either the Xon or the Xoff character to be transmitted via the "Transmit Byte Immediate" DosDevIOCtl function. o Select Transmit Break to cause a break to be transmitted. A break will continue to be transmitted until you select Transmit Break again. A check mark will be indicate that a break is currently being transmitted. o Select Flush Buffer to cause either the input (receive) buffer, or the output (transmit) buffer, or both, to be flushed. o Select Activate OUT1 to toggle the state of the OUT1 signal. The presence of a check mark will indicate that the OUT1 signal is active. Note: The Accept Extended Modem Controls extension must have been enabled previous to the current OS/2 session. See the COMi device driver manual for more information on device driver extensions and how to enable them, or look under Device Driver Extensions in the help index. ═══ 5.5. Selecting Device to Monitor ═══ COMscope can be used to monitor and/or control a serial device even if that device is currently open for exclusive access by an OS/2 application. To Monitor a Serial Device: 1. Select Device 2. Select Select Device... 3. Select a device to monitor. Either the currently monitored, or the next COMscope available, serial device will be selected upon entry to the dialog box. Only available COMscope accessible device names will be displayed in the list box. If there are no COMscope accessible serial devices available you will be notified upon start-up and the Select Device... menu item will be disabled, as will all device monitoring related menu items. ═══ 5.6. Monitoring Serial Device Status ═══ COMscope can be used to monitor the various states of a device and the device driver. Monitoring capabilities include the ability to display all of the states of the device driver and device hardware in "real-time". One or more of the available port status displays can be open on the desktop at any time. To Monitor device or device driver states: 1. Select Device. 2. Select Status 3. Select one of the following: o Select Device Driver Status to see the states of the device driver. Selecting any one of the byte or word fields displayed in this status window will cause a dialog to pop-up that describes the current state and meaning of each bit in that field. o Select Input MODEM Signals to see the states of all MODEM input signals. o Select Output MODEM Signals to see the states of all MODEM output signals. o Select Receive Buffer Status to see input buffer status. o Select Transmit Buffer Status to see output buffer status. o Select Show Captured Counts to display the running character counts for the transmit and receive data streams. o Select Set Update Frequency... to set the refresh rate for status displays. o Select Show All... to show all status displays. ═══ 5.7. Capturing I/O stream ═══ COMscope can be used to capture a serial device's I/O data stream. All characters transmitted and received by the monitored serial device can be stored in a buffer for later processing. To capture an I/O stream: 1. Select Action 2. Select Capture Data Stream to toggle capturing of the I/O stream. Related Information: o Processing Captured I/O Stream ═══ 5.8. Processing Captured I/O stream ═══ COMscope provides two different ways to process, or study, a captured I/O stream. You may want to process the data in other ways. For instance, you may want to search through the captured data to find a specific pattern. Though we have no immediate plans to include such a feature in COMscope, we may include it in a later version. We did not originally plan to include the lexical display mode, but decided to do it after getting many requests for such a display mode. Until we do include some processing feature you may need, the least we can do is supply you with the format of the captured data so that you may create any tool you may need. So here it is: Each character received or transmitted by the COMi device driver is placed in a special device driver buffer along with a byte of tracking information. Currently there are four different tracking values used by COMscope. They are: 0xA0 Indicates that the character was read from the UART. 0x90 Indicates that the character was written to the UART. 0xB0 Indicates that the character was read as an Xon or Xoff character during Transmit Xon/Xoff Handshake processing. 0xC0 Indicates that the character was written to the UART by way of the device drivers Transmit Byte Immediate function. Each word (16 bit value) is formated with the tracking information in the upper byte and the actual character read or written in the lower byte. Examples: 0xA020 translates to a space character that was read from the UART 0x9041 translates to an ASCII "A" that was written to the UART 0xB011 translates to a standard Xon character written to the UART as part of Receive Xon/Xoff Handshake processing 0xC013 translates to a standard Xoff character that was read from the UART as part of Transmit Xon/Xoff Handshake processing FYI: Any character value transmitted by any application using the Transmit Byte Immediate DosDevIOCtl function will be stored in the COMi COMscope buffer with the tracking value of 0xA5. Receive Xon/Xoff handshake processing by the COMi device driver uses this mechanism to inject a required handshake signal at the front of the transmit queue, to be written the very next time it is possible to write to the UART transmit hold register. There is one other way we can help. On the COMscope distribution diskette there is a program called "SPLIT.EXE". This Program will split a COMScope captured data file into two new files. One of the new files will contain all of the received characters from the file that was "split" and the other file will contain all of the transmitted characters. The new files will be named with the same root file name as the file that was split with the extention ".RD" for the receive character file and the extention ".WRT" for the transmit character file. The name of the file to be split is to be the first parameter on the command line. The output files will contain only the character values transmitted or received, with no tracking information. And another way. Also included on the distribution diskette is the source code (in the "C" language) for SPLIT.EXE. Not very sopisticated, but it works. ═══ 5.9. Monitoring/Displaying I/O stream ═══ COMscope can be used to display serial device's I/O data stream, in "real-time". When I/O stream capturing is enabled the characters stored in the capture buffer can be displayed as the are "captured". To display a serial device's I/O stream: 1. Select Action 2. Select Display Data Stream to toggle "real-time" display of a COM port's I/O stream. Note: There are two way to display serial data, lexically or time-relationally. See Configuring Display Options for more details. Related Information: o Viewing Captured I/O Stream o I/O Stream Display Format ═══ 5.10. Viewing Captured I/O stream ═══ COMscope can be used to examine, or "scroll through", a serial device's captured I/O stream. To Examine a captured I/O stream: 1. Select Action 2. Select Examine Data Use scroll bar(s) to scroll through captured data. Note: In order to examine data there must be data available to display, either from data that you have just captured from the serial device, or by loading data previously captured and saved. o Monitoring I/O Stream o I/O Stream Display Format ═══ 5.11. I/O Stream Display Format ═══ Any time COMscope is displaying captured data you can change the attributes of that display. Each display window has a Pop-up menu associated with it. You can "pop-up" a display's configuration menu by pressing mouse button two while the pointer is over the display window you want configure. There are two ways to display I/O stream data, either lexically (in columns) or time-relationally (in rows). In the lexical format the transmit stream is displayed in the left column and the receive stream is displayed in the right column. The time-relational format displays the received stream in the odd rows and the transmit stream in the even rows. In the lexical mode you can use the Pop-up menu to do the following: 1. Synchronize the displays 2. Call the display processing setup dialog 3. Call the display color setup dialog 4. Lock the window width 5. Set the font to either ASCII or Hexadecimal In the time-relational mode you can use the Pop-up menu to do the following: 1. Call the display color setup dialog for the transmit and receive rows 2. Cause the stream display to be compressed 3. Cause any Xon or Xoff character received or transmitted to be highlighted 4. Set the font to either ASCII or Hexadecimal You can "toggle" between the lexical mode and the time-relational mode either by pressing the F8 key or selecting the Stream Display Format menu item under the Options menu. Switching between the two display formats is possible at any time. Related Information: o Setting Display Colors o Setting Lexical Display Processing o Display Compression o Xon/Xoff Highlighting o Display Fonts o Column Width Adjusting and Locking ═══ 5.12. Selecting Display Colors ═══ There are five different display areas in COMscope: 1. Lexical transmit column 2. Lexical receive column 3. Time-relational transmit row 4. Time-relational receive row 5. Status and information The foreground and background colors for each of these COMscope display areas can be set by the user. You can set a display area's color combination by opening that area's pop-up menu, by placing the pointer over the area, pressing mouse button two, then selecting a color option menu item. ═══ 5.13. Time-relational Display Compression ═══ When COMscope is in the time-relational display mode, I/O stream characters can be displayed either compressed or not compressed. Normally each character to be displayed will be placed on the screen at the next consecutive character position. In the compressed mode any character that is read from the device (received) immediately following a character that was written to the device (transmitted), will be placed (displayed) at the same horizontal character position as the transmitted character. Example: The stream A T & F & D 2 S 0 = 1OK OK A T & F & D 2 S 0 = 1 +++A/ would be compressed to: AT&F&D2S0=1OK OK AT&F&D2S0=1 +++A/ You can turn compression on or off by opening the time-relational pop-up menu by placing the pointer over the time-relational display window, pressing mouse button two, then selecting the Compress Display menu item. This menu item is a "toggle". Each time you select this item you will "toggle" this display mode to the opposite state. A check mark will indicate that the display is to compress the display. ═══ 5.14. Selecting Xon/Xoff Highlighting ═══ When COMscope is in the time-relational display mode, any Xon or Xoff character that is received and/or transmited, when the appropriate handshaking is enabled, will be displayed with the foreground and background colors reversed. You can turn Xon/Xoff highlighting on or off by opening the time-relational pop-up menu, by placing the pointer over the time-relational display window, pressing mouse button two, then selecting the Highlight Xon/Xoff menu item. This menu item is a "toggle". Each time you select this item you will "toggle" this display mode to the opposite state. A check mark will indicate that the display is to highlight Xon and Xoff characters. ═══ 5.15. Selecting Display Fonts ═══ Each display area can display I/O stream data in either of two fonts. If the ASCII font is selected the values read from and written to the hardware will be displayed as ASCII characters. All normally printable characters will show as they would be printed. All non-printable characters will be displayed as their ASCII designated symbol. All non-ASCII defined values will be displayed as hexadecimal values. If the HEX font is selected all values will be displayed as hexadecimal values. You can select the font for a stream display area by opening that area's pop-up menu, by placing the pointer over the area you want to adjust, pressing mouse button two, then selecting the Display Font menu item. ═══ 5.16. Configuring Lexical Display ═══ Selecting the Display Process... menu item from a lexical display area (column) pop-up menu will cause a display process dialog box to appear. This dialog box will allow you to select and/or set the following features: 1. Enable a display line to "break" when a user specified character is detected in the stream. 2. Specify a "new-line" character value 3. Cause "blank lines" to be skipped 4. Cause a column's display to be synchronized to the other column. 5. Cause lines that would be longer than the display column to wrap to the next line 6. Select character display filters 7. Specify a character mask to be "ANDed" to each character before it is displayed. Disabling "new-line" translation will also disable "blank line" skipping, and column synchronization. Since disabling this feature will effectively cause a stream to look like one long line, it wouldn't make sense to not wrap that line at the end of a column, therefore that feature will also disabled when "new-line" translation is disabled. ═══ 5.17. Setting Lexical Display Column Width ═══ The width of the columns for the lexical display mode can be adjusted by pressing mouse button one when the pointer is over either column display area. When the mouse button is pressed the pointer will go to the window edge that can be adjusted. As long as you hold the mouse button down the tracking rectangle will remain in view. You can expand a column's width to the point that the other column is seven characters wide. You can decrease a column's width to zero. Once you have caused a display area to have a width of zero you only need to press mouse button one when the pointer is in the remaining column to cause the "zeroed" window to expand to the width of seven characters. Normally, each time you re-size COMscope, the width of each column will be set to cover one half of the display area. However, you can lock the width of any one column by opening that column's configuration menu and selecting the Lock Window Width menu item. ═══ 5.18. COMscope Command Line Options ═══ COMscope command switches begin with either a minus sign (dash) "-" or a forward slash "/". The switch, itself, is not case sensitive, though any string following a switch may be case sensitive.. The following COMscope features can be controlled and/or configured with command line switches: o Profile Name o Profile Sequencing o Multiple Session Shutdown o Capture File Name ═══ 5.18.1. Setting Startup Profile Name ═══ If you place /P"My COMscope Profile" after COMscope, on the command line, or in the Parameters entry field in the settings notebook, the Profile My COMscope Profile will be accessed by that session of COMscope. If a profile by that name does not exist it will be created, and all configuration information for that session will be stored there. This switch will allow you to specify a different profile for different COMscope objects or sessions. If you place a "-" after the "P" (e.g., /P-) COMscope will not access any profile and all profile management features will be disabled. Note: Profile names supplied on the command line with the /P switch are case sensitive and if there are any spaces or tabs in the name it MUST be quoted (see example, above). The last /P or /S switch found on the command line will take precedence. FYI: COMscope accesses or creates an OS/2 Profile file named COMscope.ini in the directory in which COMscope is located. Each COMscope profile name created becomes an entry in that file. COMscope.ini is normally a "hidden" file since OS/2 Profiles are marked as hidden by the Profile API. ═══ 5.18.2. Enabling Profile Sequencing ═══ If you place /S"Profile Name" after COMscope, on the command line, or in the Parameters entry field in the settings notebook, each new COMscope session started from that object will load, or create, the next profile in the series Profile Name x. Where "x" is the number of the COMscope session started. The first COMscope loaded with the /S switch will have the profile name Profile Name 1. The second will have the name Profile Name 2, and so on. If no "name" follows the /S switch, the default profile name, COMscope, will be used. This feature will best be used by creating (modifying) a COMscope object with the following settings notebook entries: 1. Place the /S in the Parameters entry field. 2. Under the Window tab in the Oblect open behavior group select the Create new window radio button. Each time you open a COMscope session from that object a different profile of the series will be loaded and acted upon. In this manner you may open multiple sessions, configure each session, and place each required COMscope status window. When you exit each COMscope session the configuration for that session can be saved. Open multiple sessions again and each session can be opened again just as it was when you exited. If you place a "-" after the "S" (e.g., /S-) COMscope will not access any profile and all profile management features will be disabled. Note: Profile names supplied on the command line with the /S switch are case sensitive and if there are any spaces or tabs in the name it MUST be quoted (see example, above). The last /P or /S switch found on the command line will take precident. FYI: COMscope accesses or creates an OS/2 Profile file named COMscope.ini in the directory in which COMscope is located. Each COMscope profile name created becomes an entry in that file. COMscope.ini is normally a "hidden" file since OS/2 Profiles are marked as hidden by the Profile API. ═══ 5.18.3. Enabling Multi-Session Shutdowns ═══ If you need to cleanly shut down multiple COMscope sessions you can enable the COMscope multiple session shutdown feature by using the "/T" command line switch. When COMscope is started with the "/T" switch on the command line it will "logon" to a shutdown server. Running the program "CONTROL.EXE" with the "/K" switch will cause all COMscope sessions "logged on" to be closed. Closing COMscope in this manner will insure that any capture buffers that are supposed to be written to disk WILL be written and that all current configuration parameters will be saved. If a COMscope session is running when the system is shutdown there is no gaurentee that all buffers will be written to disk as may be desired, or that all COMscope configuration parameters will be saved. If COMscope profiles are enabled, the Automatically Save on Exit option under the Options | Manage Profile.. menu item must be selected if you want a COMscope session to be closed without prompting you to save the current profile (unattended). The default shutdown server name is "COMscope". You can specify a different server name by placing the name on the command line following the /T switch. EXAMPLE: [C:\]COMscope /TShutDownOne If you specify a different server name on the COMscope command line you will have to specify that same name on the CONTROL.EXE command line with the same /T switch followed by the same server name. EXAMPLE:[C:\]CONTROL /K /TShutDownOne In both cases no white space is allowed in the switch. Related information: o Managing COMscope Profiles ═══ 5.18.4. Specifying Capture File Name ═══ If you are using COMscope to capture serial stream data you can place the name of a capture file to save to on the command line. Use the "/D" switch to specifiy a capture file name from the COMscope command line. Specifing a Capture file name on the command line will override any capture file name saved in a COMscope profile. In addition, you will not be prompted to overwrite any existing file by the same name, in the same location, as the file named on the command line. EXAMPLE: [C:\]COMscope /Dd:\testdat\CAP_1 The file name must be a fully qualified file specification and must include a path if the file is not to be located in the COMscope directory. This feature is useful if you want to start up a COMscope session unattended and begin to capture I/O stream data to a file. Related information: o Managing COMscope Profiles ═══ 6. Capture Buffer Processing ═══ There are three Capture buffer processing options: 1. Write Captured Data to File This option will enable capturing of the serial stream to a series of files. If this option is selected when you select the OK button, you will be prompted for a file "root" name to save to. The file dialog will "suggest" the last root file name and path supplied by the user, if any. If the file name selected/entered includes an extension of less than four characters, that extension will be replaced with "001". If the selected/entered file name has an extension of more than three characters, or no extension, the extension "001' will be appended to the file name. If the selected/entered file name has an extension that represents a number, that number will be used as the three character extension for the first file written. In all cases, each subsequent file written will have a three character extension that represents a number one higher than the previously written file. Examples: a. The file name CAP_1 will cause the series CAP_1.001, CAP_1.002, CAP_1.003, etc. to be written each time the capture buffer fills up. b. The file name CAPTURE.071 will cause the series CAPTURE.071, CAPTURE.072, CAPTURE.073, etc. to be written each time the capture buffer fills up. c. The file name CAPTURE.DATA.001 will cause the series CAPTURE.DATA.001, CAPTURE.DATA.002, CAPTURE.DATA.003, etc. to be written each time the capture buffer fills up. This name is only possible if you are writing the file to an HPFS disk partition. COMscope will not allow a file name to be used that is not supported by the file system of the target disk partition. Once this option is enabled, the next time the capture buffer fills, a new file will be written to disk. If the number of files written exceeds 999 the sequence numbering will be started over at "000". If the disk the files are being written to fills up, capturing will be aborted. 2. Stop Capture at End of Buffer This option will cause capturing to be aborted when the capture buffer is full. 3. Wrap Around at End of Buffer This option will treat the capture buffer as a circular buffer and continously store the I/O stream. This process is used mostly when you only need to display the I/O stream in "real-time". These three options can be selected while serial stream capturing is enabled. In addition to selecting capture buffer processing you may also set the size of the capture buffer. The capture buffer size may be set only when the Action | Capture Data Stream menu item is NOT enabled. You must stop I/O stream capturing to change the capture buffer size. You can either select one of the buffer sizes presented in the list box or enter any buffer size within the limits specified. FYI The data stored in the capture buffer consists of a byte of data read from or written to the device and a byte of tracking information for each I/O stream data byte stored. Each byte of I/O stream data requires two bytes of buffer. Specifying a capture buffer of 1MB will cause 2MB of memory to be allocated for the buffer. ═══ Help for Trace Update Frequency ═══ When you enable Capture Data Stream from the Action menu COMscope begins to periodically read the device driver's COMscope Trace Buffer. Capture Update Frequency is the period (in milliseconds) the monitor thread sleeps between each time it reads the device driver's trace buffer. Because it may be essential that all characters received and transmitted by an application be captured by COMscope, the monitor thread is designated as a "time critical task" with the highest priority. It is important, therefore, that the sleep time be as long as allows capturing all of the characters received and transmitted. The value calculated by COMscope is fairly conservative in that is assumes there will always be two characters, one transmitted and one received, during each character time. The Capture Update Frequency is calculated by COMscope, using the following formula: T = ((C * 1000) / ((R * 2) / 10) Where "T" is the time (in milliseconds) the monitor thread sleeps between each trace buffer read, "C" is the maximun number of characters the device driver trace buffer can hold without overflowing, and "R" is the current baud rate (bits per second). The baud rate is multiplied by two to accomodate full duplex transfers and divided by ten because eight data bits, one start bit, one stop bit, and no parity bit (a total of 10 bits) is assumed. You may override the COMscope selected frequency to adjust for any differences between the assumptions COMscope must make, and your application's requirements. If a periodic rate of less than 100 milliseconds is either calculated by COMscope or specified by the user a warning will be displayed in the trace update frequency dialog box. The size of the COMscope trace buffer for each device is configurable from the "Device | Install Device..." menu. Any changes made while "installing" a device will require a system re-boot to become effective. Note: When "Action | Display Trace" is selected COMscope will adjust the Capture Update Frequency to 200 milliseconds, unless the user has explicitly entered an update frequency. ═══ No COMscope Devices Remain ═══ All serial devices controlled by the COMi device driver have been opened for monitoring by other COMscope sessions. Until one of those other sessions has been closed you will be unable to open a COM port for access by this COMscope session. ═══ COMscope Device not Available ═══ The COMscope port does not exist or is selected by another COMscope session. Select another port for this COMscope session. ═══ No COMscope Device Available ═══ There are no COMscope accessable ports available for access by this COMscope session. You will only be able to load and examine previously saved capture data in this COMscope session. This session of COMscope can also be used to install and/or configure additional serial device for a later OS/2 session. ═══ No COMscope Devices defined ═══ There are no COMscope accessable serial devices defined for the current OS/2 session. You must use the Device | Device Install... menu item to install and configure serial devices for the COMi device driver before you can use COMscope to monitor or control a serial device. ═══ Overwrite File? ═══ If you select the Yes push button, the file name in the message box will be overwritten. Any data currently in that file will be destroyed. If you select the No push button, the file select dialog will be displayed to allow you to select another file to write. If you select the Cancel push button, the file will not be written and the dialog will be closed. ═══ Overwrite Capture File? ═══ If you select the Yes push button, the file name in the message box will be overwritten the first time the monitor thread needs to write the Capture Buffer to disk. If you select the No push button, the file select dialog will be displayed to allow you to select another file for writing captured data. If you select the Cancel push button, capture to file will be disabled. ═══ Help for COMscope Profile Manage Dialog ═══ Select a profile name to operate on from the Available Configuration Sets list box. Note: The currently loaded profile will be automatically selected upon entry to this dialog box. o Click on the Automatically Save on Exit check box to toggle automatic saving of the currently loaded profile upon exit from a COMscope session. Unless you select Automatically Save on Exit you will be asked if you want to save the current configuration upon exit from this COMscope session. You will only be asked if some parameter stored in the profile has changed since the last save or since this COMscope session began. If you are using the "shutdown server" feature of COMscope you will want to enable this option. Otherwise each COMscope session will prompt for save instructions when the "kill" command is sent to the server. o Click on the Load Monitor Configurtion check box to toggle loading, on startup, of the monitor configuration in effect the when you exit this COMscope session. o Click on the Load Last Window Positions check box to toggle using the last display and status window positions for the monitor configuration in effect when you exit this COMscope session. Note: The states of these three check boxes will be stored for any profile selected when the Save push button is selected. Any changes to these check boxes will be applied to the currently loaded profile only if you select the Save push button while that profile is selected in the list box. o Select the Save push button to save the currently selected profile. o Select the Load push Button to load the selected profile. o Select the Delete push Button to delete the selected profile. o Select the New push Button to add a new profile. The new profile will duplicate the currently loaded profile and become the "currently loaded" profile for this session of COMscope. o Select the Done push button to exit this dialog box. Note: Deleted profiles will will be marked as "deleted" in the list box. If you select a "deleted" profile the Delete push button will become an Undelete push button. You will be able to restore any "deleted" profile by selecting that profile and selecting the Undelete push button. All "deleted" profiles will be available for recovery until any currently active COMscope session is exited. At that time those profiles marked as "deleted" will be removed from the COMscope.INI file, forever. Related Information: o Multiple Session Shutdown Server ═══ Help for Profile Delete ═══ Profile management will not let you delete a profile that is in use by this, or any other COMscope session. If you want to delete the currently loaded profile for this COMscope session you must either load a different existing profile or create a new profile first. If you want to delete a profile that is being used another COMscope session you will either have to close that COMscope session or cause that COMscope session to load a different profile. Caution: COMscope will allow you to load a profile that is being used by another COMscope session. Deleteing a profile that is being used by another COMscope session can have unpredictable results; not catastrophic, just unpredictable. ═══ Help for New Profile Name ═══ Hey, we had to use some character to mark deleted profiles. You can use the character, just not for the first character. ═══ Help for Profile Save ═══ You have selected a profile name to be saved a profile other than the profile currently loaded. If you select Yes you will cause the current configuration to overwrite the selected profile. If you select No nothing will be saved or overwritten. ═══ 7. COMscope Profiles ═══ COMscope includes the ability to save not only your current COMscope session configuration (profile), but any number of session profiles. COMscope session profile access can be managed in three ways: 1. By selection from the Manage Profile... menu item under the Options heading. The Manage Profile dialog box will allow you to: a. Save the existing configuration. b. Create a new name for the existing configuration. c. Load an existing configuration. d. Delete a listed configuration. e. Turn automatic profile save on or off. f. Cause the loaded profile to start the process that was in effect the last time COMscope was exited. g. Cause the last window positions to be used for all COMscope status and display windows that were open the last time COMscope was exited. 2. By placing the name of a profile on the COMscope command line. If you place /P"My COMscope Profile" after COMscope, on the command line, or in the Parameters entry field in the settings notebook, the Profile My COMscope Profile will be accessed by that session of COMscope. If a profile by that name does not exist it will be created, and all configuration information for that session will be stored there. 3. By placing the /S switch on the COMscope command line. If you place /S"Profile Name" after COMscope, on the command line, or in the Parameters entry field in the settings notebook, each new COMscope session will load, or create, the next profile in the series Profile Name x. Where "x" is the number of the COMscope session started. The first COMscope loaded with the /S switch will have the profile name Profile Name 1. The second will have the name Profile Name 2, and so on. If no "name" follows the /S switch, the default profile name, COMscope, will be used. This feature will best be used by creating (modifying) a COMscope object with the following settings notebook entries: a. Place the /S in the Parameters entry field. b. Under the Window tab in the Oblect open behavior group select the Create new window radio button. Each time you open a COMscope session from that object a different profile of the series will be loaded and acted upon. In this manner you may open multiple sessions, configure each session, and place each required COMscope status window. When you exit each COMscope session the configuration for that session will be saved. Open multiple sessions again and each session will be opened again just as it was when you exited. Note: If you place a "-" after the "S" (e.g., /S-) COMscope will not access any profile and all profile management features will be disabled. Note: Profile names supplied on the command line with the /P or /S switches are case sensitive and if there are any spaces or tabs in the name it MUST be quoted (see example, above). The last /P or /S switch found on the command line will take precident. FYI: COMscope accesses or creates an OS/2 Profile file named COMscope.ini in the directory in which COMscope is located. Each COMscope profile name created becomes an entry in that file. COMscope.ini is normally a "hidden" file since OS/2 Profiles are marked as hidden by the Profile API. ═══ Unknown Initialization File Name ═══ The COMi device driver needs to read an initialization file during system startup to determine the location and configuration of any serial devices it is to control. The name of the file is the name of the device driver file (driver.SYS) with the extention .INI (e.g., driver.INI). When the device driver is loaded this configuration program can get the name of the initialization file by querying the device driver. If you are reading this message, and you are, then the device driver is not loaded, and you will have to supply a path and file name for the initialization file when the file info dialog is presented (next). You MUST name the file as described above, and supply a complete path to where the device driver file is located in order to complete COMi configuration and/or installation. ═══ TESTCFG device driver not loaded ═══ The configuration program cannot determine the architecture of this machine because the TESTCFG.SYS device driver is not loaded. The line DEVICE=d:\OS2\BOOT\TESTCFG.SYS is placed in your CONFIG.SYS file during the OS/2 installation process and should not be removed. It is recommended that you replace the missing line before you shutdown this OS/2 session. For this OS/2 session, you will need to indicate if this machine is an MCA machine. If you replace the missing TESTCFG line in your CONFIG.SYS, this configuration program will not need to bother you with this question again. ═══ Cannot Open CONFIG.SYS ═══ Your system configuration file (CONFIG.SYS) may have been opened by another process. You may either make the changes to your system configuration file maually or you can close any process that may have the file open and try again. Note: After you have re-enabled access to your CONFIG.SYS file you can complete this installation/configuration by selecting the Device | Install Device... menu again and just clicking on the OK push button after the dialog box re-appears. All of the configuration paramaters you have just entered will be remembered. You need only to give this process another chance to access your CONFIG.SYS file. ═══ CONFIG.SYS Modification ═══ Each load defined during COMi configuration will require a DEVICE=comdd.SYS statement in your system configuration file (CONFIG.SYS). Selecting the Yes button will cause the required load statements to be added or removed automatically. Selecting the No button will cause this configuration process to leave your CONFIG.SYS file unchanged and you will have to add or remove the required load statements manually. Note: If you inadvertantly select No you need only enter the installation/configuration process again and select the OK button to be asked to make this chioce again. ═══ Help for OEM Interrupt Processing ═══ The adapter you have selected has an interrupt ID register that allows COMi to share one interrupt request (IRQ) line with all of the UARTs on that adapter. For the adapter you selected, the interrupt ID register can be used in two different ways: o To indicate that at least one device on the adapter has an interrupt to be serviced. o To indicate which device, or devices, are in the interrupt state. You can set the manner in which the ID register is used by selecting the Interrupt Processing Algorithim to be used for this COMi load. There are three choices: 1. Poll active devices. This method causes each active port to be polled upon entry to the interrupt routine. After all devices that have interrupts pending have been serviced, COMi tests the ID register to see if any new interrupts have occurred on any device on that adapter. If the ID register indicates that new interrupts are pending then each active port is polled again. This cycle is repeated until the ID register indicates that no device is in the interrupt state. 2. Select Interrupting Device. This method causes the interrut ID register to be read upon entry to the interrupt routine. The value in the ID register is used to determine which device to service. After each interrupting device has been serviced the ID register is read again to determine if there is another device that needs service. If another device needs service, the value in the ID regieter is again used to determine which device to service. This process continues until no device has an interrupt to service. 3. Select upon entry, then poll active devices. This method starts out like the second method by servicing the highest priority device as indicated by the ID register upon entry to the interrupt routine, then polls all active devices until no pending interrupts are indicated by the ID register. COMi supports two different types of interrupt ID registers: o The most common type is found on Comtrol Hostess adapters, Sealevel Systems COMM+8 and Turbo COMM+4 adapters, and Quatech QS-XXX and ES-XXX adapters. The ID register on these adapters use each bit in the ID register to indicate which device has an interrupt pending. The first device (lowest I/O base address) on the adapter will activate bit zero of the ID register when that device has an interrupt to be serviced. The second device (second lowest I/O base address) will cause bit one to activate when that device has an interrupt pending, and so on. Priority is determined only by bit position; the first device will have the highest priority and the last device will have the lowest priority. When the algorithim choice includes "Selecting" an interrupting device (items two and three, above), the highest priority device that has an interrupt pending will be selected and serviced each time the ID register is used to "select" an interrupting device and indicates there is an interrupt pending. o The second type is used by DigiBoard for their PC/x serial adapters. The ID register is assisted by a hardware state machine that polls each of the devices on an adapter. When a device enters the interrupt state and is polled by the state machine, an interrupt is raised to the system interrupt controller. The ID register value indicates which device is in the interrupt state. When that interrupting device has been serviced the state machine will continue its polling cycle. When ANY device has an interrupt pending the ID register will contain a value the indicates the next device in the polling cycle that has an interrupt pending. This method prevents any one device from "hogging" the interrupt by always polling the other devices (in order) on an adapter before comming back the just serviced device. The hardware state machine is transparent to the device driver and is fast enough to insure that no interrupt will be lost. When a "Polling" algorithim is selected (items one and three, above) the ID register will be used only to determine that there are NO interrupts pending before the interrupt routine returns to the operating system, for that cycle that uses "Polling" of the ID register. Note: For algorithims that include "Polling", a device is considered active only if it is currenty "open". ═══ Help for Non-Exclusive Access ═══ Accessing more than one device connected to the same Interrupt Request (IRQ) circuit can cause unpredictable results. If you need simutaneous run-time access to serial devices connected to the same IRQ is recommended that you aquire a serial adapter that supports shared interrupts on ISA machines. Related Information: See Installing ISA Serial Devices for information on installing serial adapters that specifically support shared interrupts on ISA machines. ═══ Help for Shared Access ═══ Connecting two or more devices to the same hardware Interrupt Request circuit (IRQ) can cause unpredictable results. If your hardware supports the electrical characteristics required to allow more than one device to connect to an IRQ it will be safe to use such devices one-at-a-time. If your hardware does not support these electrical characteristics, you could cause your machine to lock-up anytime you access any device connected in this manner. Required Electrical Characteristics: In order to support interrupt connection sharing, a device must not place a load on the IRQ unless interrupts are explicitly enabled for that device. Related Information: See Installing ISA Serial Devices for information on installing serial adapters that specifically support shared interrupts on ISA ═══ Help for Device Hardware Setup Dialog ═══ Use I/O Base Adderess to define a base adderess for the device. Use Entry Base to select a numerical base to display and read the I/O base address. o Select Hexadecimal to to display/read the I/O base as a base 16 number. o Select Decimal to to display/read the I/O base as a base 10 number. Use Interrupt level to select the hardware interrupt level to which the device is connected. Select FIFO Setup to open the hardware FIFO setup dialog box. Note: If you have selected a specific adpater in the Adpter Set-up dialog box, you will not be able to select a hardware interrupt level here. ═══ Help for Default Baud Rate Dialog ═══ Select a standard baud rate from the drop down list box. You may enter an unlisted baud rate in the entry field. If the value you enter is not within 1% of a baud rate the device is capable of, the nearest valid baud rate will be used at system start-up. The current default baud rate will be displayed in the entry box upon entry to the dialog. If you have the device driver extension Explicit Baud Divisor selected for this port, the value you enter will be used as the baud rate divisor for this device and be written directly to the baud rate select registers on the UART. Note: In order to use the Explicit Baud Divisor feature, the device you are controlling must be capable of non-standard UART clock rate selection in hardware. See your serial adapter documentation for further information. ═══ Help for Default Protocol Dialog ═══ Select a standard baud rate from the drop down list box. You may enter an unlisted baud rate in the entry field. If the value you enter is not within 1% of a baud rate the device is capable of, the nearest valid baud rate will be used at system start-up. The current default baud rate will be displayed in the entry box upon entry to the dialog. If you have the device driver extension Explicit Baud Divisor selected for this port, the value you enter will be used as the baud rate divisor for this device and be written directly to the baud rate select registers on the UART. Note: In order to use the Explicit Baud Divisor feature, the device you are controlling must be capable of non-standard UART clock rate selection in hardware. See your serial adapter documentation for further information. Select the default line protocol for this device by checking the required buttons. Selecting parity to be Zero will cause the parity bit to be transmitted as a zero, and cause the receiver to expect a zero in the parity bit for any character it receives. Selecting parity to be One will cause the parity bit to be transmitted as a one, and cause the receiver to expect a one in the parity bit for any character it receives. ═══ Help for Device Driver Buffer Setup Dialog ═══ Use the sliders or scroll buttons to select the various COMi device driver buffer sizes. Deselecting Enable COMscope Access will disable COMscope access to this device for the next OS/2 session. Note: COMscope access will not be available unless you are configuring or installing the COMi device driver from within COMscope or from a COMscope distribution diskette. ═══ Help for Device Configuration Dialog ═══ Use Device Configuration dialog box to set the following device parameters for the device being configured: Use the Device Name field: To select the DOS name for the device being configured. This list box will only display device names that are not already selected for use by the COMi device driver and are available for installation. Note: If you select a device name used by the COM.SYS device driver, the COMi device driver will take presedence. Select Hardware...: To enter a device's I/O base address, select an interrupt level, and set the start-up defaults for FIFO control (for those devices that support FIFOs). Note: If you have selected a hardware interrupt level for this load from the Adpter Set-up dialog box, the hardware interrupt level selection field will be disabled. Select Buffers...: To set the size of transmit, receive, and COMscope buffers the device driver allocates at initialization and enable or disable COMscope run-time access. See COMi Buffer Limits for buffer size limits. Select Handshaking...: To set startup defaults for the various handshaking protocols supported by the device driver. Select Timeouts...: To set default time-out counts and processing for a device. Select Protocols...: To set the start-up defaults for line characteristics and baud rate. Select Extensions...: To set select various device driver extensions. Note: Next to the Device Name field, in red, is a suggested (guessed) I/O base address and interrupt level. If you select the OK push button the values shown there will be used for the device being configured. ═══ 8. Device Driver Extensions ═══ COMi has evolved over the years while attempting to solve specific problems for our customers. COMi "extends" the functionality of the serial device driver supplied with OS/2* in the following ways: Allows extended modem controls Allows an application to have runtime control of the OUT1 and LOOP signals of the UART. Lets you disable modem interrupts Modem input signals can be processed with or without interrupts. The purpose of this extention is to make it possible to use this device driver on some adapter boards that do not properly terminate all of the modem signal input pins of a UART. Modem signals are still monitored when this item is selected, just not as efficiently. Lets an application supply an explicit baud divisor This extension takes advantage of those adapter boards that allow a user to select non-standard clocks for the UART baud rate generator. Allows an application to disable startup UART tests This feature can disable extensive testing of the UART and its connections at initialization, including hardware interrupt connection, and interrupt ID register functionality. Allows enabling of application specific extensions An application can use COMi extensions designed for that application. These extensions are specific to some specialized applications. If you are using an application supported by one or more of these extensions, that application's documentation will explain its usage of these extensions. Allows activation of the OUT1 signal on startup This feature forces the OUT1 output signal to the active state during initialization at system startup. Note: Unless you turn off OUT1 via a DosDevIOCtl call when the COMi extention Enable Modem Extensions is enabled, OUT1 will remain active throughout the life of that OS/2 session. Supports special processing for the Texas Instruments 16C550A/B UART: This feature allows you to specify that the device you are configuring COMi for is a Texas Instruments 16C550A or 16C550B UART. These UARTs require some special processing when the receive FIFO is enabled. If the item is not checked when the device is a TI 16C550A or 16C550B your system WILL lock-up if this device is used with receive FIFOs enabled. Allows multiple devices to be connected to a single interrupt: This feature will allow more than one device to share an Interrupt Request (IRQ) connection. Note: When this item has been selected you can also select to allow more than one device connected to an interrupt level to be open at the same time by disabling exclusive access tests at run-time. Disabling exclusive access tests and opening two ports connected to the same interrupt level is not recommended, as it is possible for your system to stop responding to an interrupt level shared in this manner under certain conditions that may, or may not, be under your control. Note: When you are using an adapter that supports shared interrupts you MUST use the Adpter Set-up button in the Device Install... dialog box to configure this COMi load for that specific interrupt adapter. ═══ Help for Device Driver Extensions Dialog ═══ Use the Extensions dialog box to select the following extensions for the device being configured: Select Accept Extended Modem Controls: To allow an application to have runtime control of the OUT1 and LOOP signals of the UART. Select Disable Modem Interrupts: To process modem input signals without interrupts. The purpose of this extention is to make it possible to use this device driver on some adapter boards that do not properly terminate all of the modem signal input pins of a UART. Modem signals are still monitored when this item is selected, just not as efficiently. Select Use Explicit Baud Divisor: To take advantage of those adapter boards that allow a user to select non-standard clocks for the UART baud rate generator. Select Disable Startup UART tests: To disable extensive testing of the UART and its connections at initialization, including hardware interrupt connection, and interrupt ID register functionality. Select Enable Device Driver Extensions: To enable application specific COMi extensions. These extensions are specific to some specialized applications. If you are using an application supported by one or more of these extensions, that application's documentation will explain its usage of these extensions. Select Activate OUT1 on Startup: To force the OUT1 output pin active at initialization. Note: Unless you turn off OUT1 via a DosDevIOCtl call when the COMi extention Enable Modem Extensions is enabled, OUT1 will remain active throughout the life of that OS/2 session. Select Texas Instruments 16C550A/B: If the device you are configuring is a Texas Instruments 16C550A or 16C550B UART. These UARTs require some special processing when the FIFOs are enabled. Select Shared Interrupt Connection: To allow more than one device to share an Interrupt Request (IRQ) connection. Note: When this item has been selected you can also select to allow more than one device connected to an interrupt level to be open at the same time by deselecting the Exclusive Access check box. Deselecting Exclusive Access and opening two ports connected to the same interrupt level is not recommended, as it is possible for your system to stop responding to an interrupt level shared in this manner under certain conditions that may, or may not, be under your control. Warning: Unless a serial adapter has specialized hardware it will not be possible to share interrupts in any way. For this feature to be useful your hardware MUST not load its interrupt request (IRQ) line unless, and until, it has an interupput to be processed. If the device loads the IRQ when not in the interrupt state then any other device connected to that IRQ will not be able to signal an interrupt to the system interrupt controller. Note: When you are using an adapter that specifically supports shared interrupts you MUST use the Adpter Set-up button in the Device Install... dialog box to configure this COMi load for that specific interrupt adapter. ═══ Help for Adapter Configuration Dialog ═══ The Adapter Type group is used to select the type (or manufacturer) of the serial adapter for which you are configuring the device driver. Select Comtrol Hostess: If your are using Comtrol Corporation's four or eight port Hostess serial adapter, or any adapter that uses the same ISA bus shared interrupt scheme. Select Sealevel Systems: If your are using Sealevel Systems' four port Turbo COMM+4, the eight port COMM+8 serial adapters, or any adapter that uses the same ISA bus shared interrupt scheme. Sealevel supplies its adapters to various distributers under different names. You would use this selection for any of those serial adapters. Select Quatech: If your are using Quatech Incorporated's four port QS-XXX series, or the eight port ES-XXX series serial adapters, or any adapter that uses the same ISA bus shared interrupt scheme. Select DigiBoard (PC/4 & 8): If your are using DigiBoard's four port PC/4, or the eight port PC/8 serial adapters. Select DigiBoard (PC/16): If your are using DigiBoard's sixteen port PC/16 serial adapter. Select Other: If your are configuring any serial adapter that does not support interrupt sharing in hardware. Selecting this item disables hardware supported interrupt sharing for this COMi load, and will allow you to select an interrupt level for each device you define for this load. Use the Interrupt Status/ID Address field to define an interrpt ID register address for the device driver load being configured. Use Entry Base to select a numerical base to display and read the interrupt ID register address. o Select Hexadecimal to to display/read the interrupt ID register address as a base 16 number. o Select Decimal to to display/read the interrupt ID register address as a base 10 number. Use Interrupt Level to select the hardware Interrupt level to which the adapter is connected. Select the Interrupt Processing Algorithim button to select the manner in which the interrupt Status/ID register will be used to process adapter interrupts. ═══ Help for Device Driver Configuration ═══ The COMi Load group is used to select the following parameters: This button will open the adapter set-up dialog box. Use this button to configure the COMi device driver for your serial adapter. This button appears only for ISA serial adapters and is not required for MCA adapter configuration. Device Driver Load Number This field is used to select the device driver load number to configure. Add Load This button will cause another device driver load to be opened for device installation. Remove Load This button will cause the currently selected device driver load to be deleted. Note: You will not be allowed to delete load number one. If you want to remove all COMi loads and remove all DEVICE=comdd.SYS statements from your CONFIG.SYS file you will have to delete each device from the Device Definitions list box for load number one. The Initialization Report group allows the user to select for additional information to be displayed at initialization: Verbose Sign-on This parameter, when selected, causes the device driver to display extended information during initialization. Wait for Keystroke or Timeout... This parameter, when selected, causes the device driver to wait until either the user presses the ENTER key or the timeout defined in the next parameter occurs. This is to allow a user time to read the extended information displayed when Verbose Sign-on is selected. The list box in the Device Definitions group shows a list of any installed devices for the currently selected device driver load. Each device driver load can have up to eight serial devices under its control. Each installed device will have the following information: o Device's logical name (COM1 through COM99) o Device's hardware base I/O address o Device's hardware interrupt level o Indicators for any device driver extensions selected for that device You can edit a defined device's configuration either by double clicking the mouse button one on that list item or selecting that device in the list and selecting the Edit Device button. If there are less than eight devices defined you can install a new device by selecting the Add Device button. If you are installing a sixteen port adapter (i.e., DigiBoards PC/16) the Add Device button will remain enabled until you have installed all sixteen serial devices. You can delete any defined device by selecting that device from the list and selecting the Remove Device button. Click on the OK button to close the dialog box and save the changes just made. Click on the CANCEL button to close the dialog box without saving any changes. ═══ 9. COMi Buffer Size Limits ═══ COMi buffer sizes can be set to the following: ┌────────┬───────┬───────┬───────┐ │Buffer │minimun│default│maximum│ ├────────┼───────┼───────┼───────┤ │Receive │1024 │4096 │64k │ ├────────┼───────┼───────┼───────┤ │COMscope│1024* │4096 │32k │ ├────────┼───────┼───────┼───────┤ │Transmit│128 │256 │8k** │ └────────┴───────┴───────┴───────┘ * If COMscope access is disabled no COMscope buffer will be allocated. ** A total of about 63k is available for all transmit buffers for each COMi load. ═══ 10. Installing ISA Serial Devices ═══ If you are installing a serial support in an ISA machine and you intend to connect multiple devices to a single hardware interrupt level you need to be aware of the following: 1. Your adapter must have special features to support interrupt sharing. 2. The adapter's special features that allow interrupt sharing must be enabled and configured correctly. 3. You must know the hardware address of your adapter's interrupt status or ID register. 4. You must open the adapter set-up dialog by clicking on the Adpter Set-up button from the Device Install dialog to specify the adapter type, hardware interrupt level, and address of the interrupt status/ID register in order to define more than one device to a hardware interrupt level. Note: Sharing interrupts on an MCA machine requires no special configuation. Please note, though, that it is not recommended that you connect more than eight devices to any one hardware interrupt level. ═══ 11. Installing COMi Print Spooler Support ═══ To install and configure COMi Print Spooler support you must have selected to transfer the spooler support files while installing COMi by selecting the "Print Spooler Utilities" check box in the "Install Options" dialog, and you must have re-booted your machine since that install session. Once you have completed installing the files you will need to do the following: 1. Click mouse button two (usually the right button) on a local printer object. If you have not created a local printer object yet then you will need to drag a non-network printer object from the "Templates" folder onto your desktop. Note: If you will be creating a printer object as part of this installation then skip to item three, as the printer object's settings notebook will have been presented immediately after you dragged the object from the "Templates" folder. You will also have to select a printer driver and possibly need to set other parameters in the printer's settings notebook. 2. Select the "Settings" menu item. 3. Click on the "Output" tab. 4. Click mouse button two on any port icon in the container window. 5. Select the "Install" menu item. 6. In the "Directory" entry field enter the following (without the quotes): "\OS2\DLL", then press the key or select the "Refresh" button. 7. The Spooler software will read each spooler support library in that directory, including the COMi spooler support library, show an icon in the container area for each device the spooler support libraries support. 8. Select one, or more, of the COMi Spooler ports and select the "Install" button. 9. When the Spooler software is finished installing the ports you have selected it will present a message box indicating thet the ports you selected have been installed. Click on the "OK" button. 10. When you are through installing Spooler Ports, click on the "Cancel" button. 11. You can set the port parameters to match the requirements of a printer by clicking mouse button two on an icon in the container area and selecting the "Settings" menu item. Help for setting port parameters will be available once you have entered the setup dialog. Once you have installed at least one COMi spooler port in this manner, you will be able to install and delete spooler ports from the COMi Configuration program (either Install or COMscope). Configuration of these ports for printer initialization will always have to be done from the printer object's settings notebook. ═══ Help for Timeout Processing ═══ Use the Read Timeout Processing group to select the type of read time-out processing you need, and to set the read time-out count. Select : Normal read time-out processing: Causes the device driver to wait up to the designated read time-out count after each character received before returning to the calling application. Upon reception of a read request packet the device driver will first try to fill the request from the receive buffer. If all of the bytes requested are available in the buffer, the device driver will return immediately. If all of the requested bytes are not in the buffer, the device driver will wait for incomming bytes until either the request is filled (all requested bytes have been placed into the receive buffer by the hardware) or until more than the time represented by the read time-out count passes between bytes received by the hardware. Wait for Something read time-out processing: Causes the device driver to act like No Wait read time-out processing only if there are characters available in the buffer when the read request packet arrives. In this case the device driver will return to the calling process, immedialely, with any characters that are available, up to the number of characters requested. If there is nothing in the receive queue when the request packet arrives the device driver enters Normal read time-out processing and returns only after either the request is filled (all requested bytes have been placed into the receive buffer by the hardware) or until more than the time represented by the read time-out count passes between bytes received by the hardware. No Wait read time-out processing: Causes the device driver to transfer up to the requested number of bytes from the receive buffer and return immediately. The read time-out count is ignored. Upon reception of a read request packet, if no bytes are available the device driver still returns immediately. Use the Write Timeout Processing group to select the type of write time-out processing you need, and to set the write time-out count. Normal write time-out processing: Causes the device driver to wait up to the designated write time-out count for any output handshaking request that caused the device driver to stop transmitting . Upon reception of a write request packet the device driver will try to begin transmitting. If some output handshaking signal (CTS, DSR, DCD, or reception of an Xoff character) indicates that the device driver should not be transmitting the device driver will wait up to the write time-out count for all signals to indicate it is OK to start transmitting again and all bytes remaining to be transmitted are transmitted, before returning to the calling application. Infinite write time-out processing: Causes the device driver to wait forever for a handshaking signal to indicate that it is OK to transmit. "Forever" can be limited by sending a "flush output buffer" command. Upon reception of a write request packet the device driver will try to begin transmitting. If some output handshaking signal (CTS, DSR, DCD, or reception of an Xoff character) indicates that the device driver should not transmit, the device driver will wait until it has been signaled to start transmitting again and all bytes remaining to be transmitted are transmitted, before returning to the calling application. Timeout Counts Both time-out counts represent the number of ten millisecond intervals to wait, zero based. For example: a count of 99 will cause the device driver to wait up to one second before returning. ═══ Help for Handshaking ═══ Selecting Transmit Xon/Xoff handshaking will cause the device driver to stop transmitting characters when an Xoff character is received and to start transmitting again when an Xon character is received. Selecting Receive Xon/Xoff handshaking will cause the device driver to transmit an Xoff character when the receive buffer is close to full (off threshold) and to transmit an Xon character when the receive buffer is less than half full (on threshold). Selecting Full Duplex will allow the device driver to continue transmitting after transmitting an Xoff character. Otherwise the device driver will stop transmitting after transmitting an Xoff character and will begin transmitting againg after it sends an Xon character. When either of the ASCII Handshaking protocols are selected you will be able to enter values for the Xon Character and the Xoff Character. These characters have standard values and should only be changed if you have special requirements. These values are displayed, and can only be entered, in Hexadecimal (base 16) format. Selecting any of the Output Handshaking signals will cause the device driver to stop transmitting when that signal is detected to be in the inactive, or off, state. Selecting DSR Input Sensitivity will cause the device driver to ignore any bytes received while the DSR signal is detected to be inactive. Selecting RTS or DTR Input Handshaking will cause the device driver to make those respective signals inactive when the receive buffer is close to full (off threshold) and to make them active when the receive buffer is less than half full (on threshold). Selecting RTS Toggling on Transmit will cause the device driver to make RTS active whenever it begins transmitting. When transmitting has been stopped for approximately 30 milliseconds the device driver will make RTS inactive. Selecting Enable or Disable RTS or DTR will cause those respective signals to be enabled or disabled. Make the required selection by checking the required buttons. ═══ 12. Help for Menus ═══ Various COMscope modes and functions are selected by using the menu bar. The Following headings are available: o File o Action o Options o Device o Help ═══ 12.1. Help for File ═══ Use File to load or save a previously captured I/O data stream or to exit COMscope. The possible selections are: Load Data Load a previously saved I/O data stream capture buffer. Save Data Save the current contents of an I/O data stream capture buffer. Save Data As Save the current contents of an I/O data stream capture buffer under a new file name. Exit Close this instance of COMscope and return to the OS/2 Desktop. ═══ 12.2. Help for Action ═══ Use Action to select various I/O data stream processing options for the current active device. The possible selections are: Capture Data Stream Enables I/O data stream. capturing for the currently active device. Display Data Stream Enables "real-time" display of the currently active device's data stream. Examine Data Enables display and scrolling of the current contents of the I/O data stream capture buffer. Surface Sessions Enables user to cause all child windows, either of this COMscope session, or all COMscope sessions, to be brought to the top on the desktop. A check mark appears next to an item that is "toggled" to the active state. ═══ 12.3. Help for Device ═══ Use Device to select, configure, and control a COM port. The possible selections are: Select Device Select COM port to "activate" for monitoring and control. Install Device Install or edit COM port initialization parameters. Status Monitor various "active" device and device driver states. Control Control various "active" device and device driver functions and affect various states of the device and device driver. Protocol Set "active" COM port online parameters (i.e., line characteristics, baud rate, etc). ═══ 12.4. Help for Options ═══ Use Options to select or toggle various device monitoring options. The Options are: Capture Buffer Setup... Allows you to define I/O data stream capture buffer size and processing. Capture Update Frequency... Allows the user to specify how often COMscope reads the device driver's COMscope trace buffer. Normally the amount of time between COMscope reads of the trace buffer is calculated by COMscope and is based on the baud rate and the size of the COMscope buffer defined within the device driver. The value calculated is conservative, in that it is assumed that data will be streamed continously in both the transmit and receive directions. The user may be better able to judge the maximun throughput required and, therefore, be able to select a more efficient time-out value. In any case, if the user enables the Display Data Stream mode, the time-out will be adjusted to a maximum of 200 milliseconds. Stream Display Format Allows the user to switch the display between the lexical and time-relational formats. The user can also press the F8 function key to "toggle" display formats. Sticky Pop-up Menus Allows the user to set the response attributes of all pop-up menus to: 1. Cause the pop-up menu to stay where it appeared when first invoked, until the user has either: a. Selected an item b. Clicked mouse button one somewhere other than on the menu c. Pressed the ESCAPE key 2. Cause the pop-up menu to stay up only as long as the user holds down the mouse button that was used to invoke the menu (mouse button two). Note: If this attribute is selected the user can cancel without selecting an item in the menu by moving the pointer off the menu and releasing the mouse button. Manage Profile... Opens COMscope profile management dialog. A check mark appears next to those items that are "toggled" to the active state. ═══ 12.4.1. Help for Select Device ═══ Use the Select Device menu item to bring up the COMscope device selection dialog. The COMscope device selection dialog presents a drop down list of currently available COMscope devices. Only one COMscope session may access any single serial device. ═══ 13. Editing Serial Device Startup Parameters ═══ To edit serial device's configuration: 1. Select Device 2. Select Install Device 3. Select a device to edit. Various COMi device driver startup parameters can be changed from the defaults selected by OS/tools. The parameters that can be changed are: 1. Initial baud rate 2. Initial line characteristics 3. Initial time-out processing 4. Initial handshake processing 5. Initial FIFO setup 6. Transmit, receive, and COMscope buffer sizes 7. Various extensions The parameters noted as "initial" settings can be changed at runtime by any application. Some of these parameters will be returned the inital value whenever a first level DosOpen is processed for a device. ═══ 14. Installing Serial Devices ═══ To install or configure a serial device: 1. Select Device 2. Select Install Device To install a device you must select at least an I/O base address, an interrupt level, and a DOS (COMx) device name. Related Information: Installing ISA Serial Devices ═══ Help for File Select ═══ Use Select File... to select a filename to process: 1. Select the down arrow to the right of the Drive list to display all the drives on your system. 2. Select a drive from the Drive list. 3. Select a directory from the Directory list. 4. Select a file name from the File list or type in a file name. 5. Select the OK pushbutton to except the file selected. For a detailed explanation of each field, select from the list below: o Select file name o Type of file o Drive o File o Directory o OK o Cancel ═══ Help for Open Filename ═══ Type the name of the file you want to select in the Open filename field and select the OK pushbutton. ═══ Help for Type of File ═══ Select the down arrow to the right of the Type of file field to display the available file types. ═══ Help for Drive ═══ The Drive list displays the drives on your system. Select the drive that contains the files you want to view. ═══ Help for File ═══ The File list displays all the files in the directory you selected from the Directory list. Select the file you want to process. ═══ Help for Directory ═══ The Directory list displays the directories on the selected drive. Select a directory to display the list of files from that directory in the File list box. ═══ Help for OK ═══ Select OK to accept all information in the window and remove the window from the screen. ═══ Help for Cancel ═══ Select Cancel to remove the window from the screen without completing any action or saving any changes. ═══ Help for Input Stream Filtering ═══ Select Enable Error Replacement Character to cause the device driver to replace any character received with a parity or overrun error with the currently defined Error Replacement Character. When Enable Error Replacement Character is enabled you can enter an Error Replacement Character value. This value can only be entered in Hexadecimal (base 16) format. Select Enable Break Replacement Character to cause the device driver to replace any character received during a transition to the break condition with the currently defined Break Replacement Character. When Enable Break Replacement Character is enabled you can enter a Break Replacement Character value. This value can only be entered in Hexadecimal (base 16) format. Select Enable NULL Striping to cause device driver to NOT place received NULL characters (zeros) into the receive buffer. ═══ Help for Line Protocol ═══ Select the line protocol for this device by checking the required buttons. Selecting parity to be Zero will cause the parity bit to be transmitted as a zero, and cause the receiver to expect a zero in the parity bit for any character it receives. Selecting parity to be One will cause the parity bit to be transmitted as a one, and cause the receiver to expect a one in the parity bit for any character it receives. ═══ Help for Hardware Buffer Control ═══ Select the required FIFO Control parameters by checking the required button. When Automatic Protocol Override is selected the device driver will automatically disable the receive FIFO whenever Receive Xon/Xoff handshaking, RTS or DTR Input Handshaking, or DTR Input Sensitivity are enabled, and disable the transmit FIFO whenever any Output Handshaking is enabled. Select the required FIFO depth by checking the required buttons. Note: The COMi device driver has sufficient handshanking threshold padding to accomodate bytes received in the FIFO after a handshake signal occurs. Unless your application MUST stop receiving and/or transmitting on exactly the byte received and/or transmitted when a handshake signal is detected it is recommended that Enable FIFO be selected. ═══ Help for Baud Rate Selection ═══ Select a standard baud rate from the drop down list box. You may enter a non-standard baud rate in the entry field. If the value you enter is not within 1% of a baud rate the device is capable of, it will be rejected. If you have Explicit Baud Divisor selected for this port, the value you enter will be used as the baud rate divisor for this device. In order to use the Explicit Baud Divisor feature, the device you are controlling must be capable of non-standard UART clock rate selection in hardware. See your serial adapter documentation for further information. ═══ 15. Communications Concepts ═══ This section is a "catch-all" for any information we thought may be helpful. Concepts: o Automatic Protocol Override o Baud Rate o I/O Stream Filtering o Communications Handshaking o Line Characteristics o Device Driver Wait States ═══ 15.1. Device Driver Wait States ═══ Whenever an application reads from or writes to a COM port the device driver may block the thread that calls the DosRead or DosWrite function. Threads can be blocked on DosRead calls whenever the number of characters requested are not available. Threads can be blocked on DosWrite calls whenever some handshaking processing requires that a serial device not transmit. Because of this, it is recommended that the main thread (in which the message queue is executing) not be used to read from and write to a COM port. If the thread in which a message queue is executing is blocked it can cause the entire system to be blocked because that thread cannot return to the queue until the event that caused the device driver to block has occurred. The amount of time the device driver will block for any event is configurable by any application. ═══ 15.2. Line Characteristics ═══ The format of the data that is to be transmitted and received is configurable by any application. The parameters that are available are: 1. The number of data bits 2. The number of stop bits 3. The type of parity processing, if any From five to eight data bits can be selected. One, one and a half, or two stop bits can be selected. Note: 1.5 data bits is only valid when five data bits is defined and 2 stop bits is not valid when five data bits is selected. There are five parity processing options: 1. No parity 2. Even parity 3. Odd parity 4. Zero parity 5. One parity Even parity causes the parity bit to be on (one) whenever the bits of a data word add up to an even value. For example: the data value 0x55 would cause the parity bit to be on and the data value 0x45 would cause the parity bit to be off (zero). Odd parity causes the parity bit to be on (one) whenever the bits of a data word add up to an odd value. For example: the data value 0x55 would cause the parity bit to be off (zero) and the data value 0x45 would cause the parity bit to be on. Zero parity causes the parity bit of a data word to be off (zero) at all times. One parity causes the parity bit to be on (one) at all times. FYI Zero and One parity are sometime referred to as "stick" parity because they cause the parity bit to "stick" at some value. When no parity is selected no parity bit is transmitted. This causes the data word to be one bit shorter than a data word that requires some type of parity information. Line characteristic settings cause the data word to have different bit lengths. As all data words have a start bit, line characteristics of eight data bits, one stop bit, and no parity bit will cause a data word of ten bits to be transmitted. Only the first stop bit is tested when a data word is received. ═══ 15.3. Receive Stream Filters ═══ There are three types of stream filters available: 1. Error character replacement 2. Break character replacement 3. NULL character stripping If Error Character Replacement is enabled a user specified character will be placed in the receive buffer whenever a receive error is detected, instead of a possibly bad received character. The default error replacement character is the NULL character (zero). Errors that can cause the replacment character to be inserted are: 1. Receive hardware overrun This will happen when a new character is received at the hardware before a previously recieved character has been removed by the device driver. This is usually a result of too high a baud rate. Using a serial adapter with 16550 UARTs will usually prevent this error. 2. Parity errors This error can be caused by mismatched line characteristics or noisy data lines. 3. Framing errors This error is usually caused when baud rates are not the same between this hardware (near-end) and the hardware you are attempting to communicate with (far-end). 4. Receive buffer overrun This error is caused when an application does not "read" from the device driver as fast as the data is received. This error can be prevented by using some form of "handshaking". If Break Character Replacement is enabled a user specified character is placed into the receive buffer when a "break" condition is first detected at the UART. Once the break character has been inserted in the buffer no new characters will be placed in the buffer until the "break" condition is no longer being received. If NULL Stripping is enabled characters received that have a value of zero will not be placed in the receive buffer. ═══ 15.4. Automatic Protocol Override ═══ Normally you would want to enable hardware buffers to reduce system overhead. When handshaking is required between this hardware (near-end) and some external hardware (far-end), it may be required that a far-end's request to stop transmitting be acted upon immediately. If hardware buffers are enabled it would be possible for that hardware to transmit up to 20 characters after the device driver receives a "stop transmitting" signal. This is because once the device driver has filled the hardware buffer, transmission will continue until the buffer is empty. This may cause a problem for some far-end equipment. This problem can occur when any output handshaking is enabled. This includes CTS, DSR, and/or DCD output handshaking and transmit Xon/Xoff handshaking. The CTS, DSR, and DCD signals are "hardware" flow control signals and transmit Xon/Xoff handshaking is "software" flow control signaling. There are two output handshaking scenarios to consider. The first is the hardware signaling case. When the far-end's receive buffer is full (or nearly full) it may signal to the near-end by making one or more of the hardware signals inactive. When the near-end detects an inactive signal it should stop transmitting. If the transmit buffer is enabled at the near-end it could transmit up to 16 characters before it becomes aware of the signal to stop. The second case is software signaling. When the far-end's receive buffer is full (or nearly full) it may signal the near-end by transmitting an Xoff character. When the near-end receives the Xoff character it should stop transmitting. If, at the near-end, the receive buffer is enabled, it will not detect the request to stop transmitting until it has read the Xoff character from the receive buffer, and if the transmit buffer is enabled it may transmit up to 16 bytes before it stops transmitting. When hardware buffers are enabled receive interrupts can be caused by two events. The first is when the number of characters in the FIFO reaches the programmed threshold, either one, four, eight, or fourteen characters. The second is when at least one character has been received and placed in the FIFO and then no new characters are received for four character times. This second type of receive interrupt would make it possible for an Xoff character to be received by the hardware and not be read by the device driver for up to four character-times after the character was received. The worst case would be for the Xoff character to arrive at the near-end hardware just as there are four characters left in the transmit buffer to be transmitted. The device would cause a transmit interrupt just as the last of the four characters is transmitted and the device driver would refill the transmit buffer, then the device would cause a receive FIFO time-out interrupt and the device driver would read, and detect, the Xoff character, preventing further transmissions. This case could allowup to 20 characters to be transmitted after the far-end transmitted the Xoff character. All of these potential problems go away if the transmit buffer is disabled when any output handshaking is enabled and/or the receive buffer is disabled when transmit Xon/Xoff handshaking is enabled. When Automatic Protocol Override (APO) is enabled the device driver adjusts hardware buffer functionality according to handshaking requirements. When APO is enabled and an application requests CTS, DSR, or DCD output handshaking, the device driver will disable the transmit buffer. When APO is enabled and an application requests transmitXon/Xoff handshaking the device driver will disable both the transmit and receive buffers. There is one other adjustment APO can cause the device driver to make to the hardwarebuffer functionality of a device. When DSR input sensitivity is enabled, and APOis enabled, the receive buffer will be disabled by the device driver. DSR input sensitivity is designed to handle devices that may transmit garbage whenever DSR is in the inactive state. In this case it would be necessary to ignore any characters received while DSR is inactive. It may be possible for the far-end to transmit a character at the same time it activates DSR. This could cause the near-end to miss a valid character if its receive buffer is enabled. What does all this mean to you? Probably nothing. There are not many far-end devices around these days that do not have some level of buffering capabilities. We recommend that you leave APO off unless, and until, you determine that you are communicating with some archaic equipment that requires it. Related Information: o Communications Handshaking ═══ 15.5. Communications Handshaking ═══ In any system it is important that all real-time activities, like serial communications, be truly asynchronous. Basically this means that no information should be lost because the operating system was busy doing something else. In operating systems like DOS, or DOS and Windows**, there is never any guarantee the operating system will be able to get to a real-time process in a timely manner. Each process in these systems owns the machine until it relinquishes control. If a real-time process needs service it has to wait until any current processes are finished. In OS/2* this is not normally a problem. Its structure is such that hardware interrupts have the highest priority and are serviced "almost immediately", and other processes are given a time-slice in which to execute. Problems can occur in two ways. The first is when hardware interrupts come in faster than the operating system can respond. For asynchronous serial communications this problem is addressed mostly by serial devices with hardware buffers (FIFOs). The second problem is that a process may not be able to read and process incoming information as fast as the hardware and device driver can receive and store information. This problem is addressed by the handshaking features of the serial device driver. When handshaking is enabled the receiving system (device driver) will signal the transmitting system to stop transmitting when its receive buffer nears full capacity. The transmitting system should stop transmitting when it receives a signal to stop. In OS/2 a serial device driver must be capable of handshaking without intervention or control by the controlling higher level process. All a controlling process needs to do is command the device driver into a handshaking mode and the device driver must do all of the processing to be sure that the controlling process does not lose any information. This includes detecting when its own receive buffer is nearly full so it can send a stop transmitting signal and then detecting when its receive buffer has been emptied enough so that is can send a start transmitting signal. It also includes detecting when the device it is transmitting to has sent a stop transmitting or start transmitting signal and act accordingly. ═══ 15.6. Serial Device Baud Rate ═══ Baud rate for a serial device is defined as the number of bits per second that are transmitted and/or received over a transmission line. A baud rate of 9600 means that 9,600 bits are communicated each second. Another common way to express baud rate is with the units "BPS" for Bits Per Second (i.e., 9600 BPS). The actual number of characters communicated can be calculated by adding the number of bits in a character to the number of stop bits specified, adding one for the start bit, and adding one if a parity bit is required. For example an eight bit character using no parity and one stop bit would require ten bit times to transmit one character of information. In this case a baud rate of 9600 would communicate about 960 characters a second. A seven bit character with even parity and one stop bit would also require ten bit times to transmit a single character. Using COMscope you can set the baud rate for a monitored device. Setting the baud rate for a device will force a change to the new baud rate, preempting any baud rate set by any application accessing that device. Any application can reset another baud rate at any time. To set the baud rate for a monitored device: 1. Select Device 2. Select Protocol 3. Select Baud Rate If you enter an invalid baud rate the baud rate will not be changed. ═══ 15.7. Serial Device FIFO Processing: ═══ When the device being controlled by the COMi device driver is a 16550 UART, or equivalent, COMscope can be used to set the various FIFO processing modes of that device. If the device does not have FIFOs the FIFO Control... menu item will be disabled. COMi has three major FIFO modes: 1. FIFOs disabled 2. FIFOs enabled 3. Automatic Protocol Override (APO) When FIFOs are enabled, this includes APO, the depth of the buffers is selectable. For the receive FIFO the following thresholds can be selected: 1. One character 2. Four characters 3. Eight characters 4. Fourteen characters Either one character or sixteen characters can be buffered for transmission. Related Information: o Automatic Protocol Override ═══ ═══ Each device to be controlled by the COMi device driver owns a set of eight contiguous I/O space addresses. The I/O base address is the first address in that device's address space. See your adapter board documentation to determine what I/O base address to use. ═══ ═══ Each device to be controlled by the COMi device driver must be connected to one, and only one, hardware interrupt level. See your adapter board documentation to determine what interrupt level to select. Note: An exception to this rule is when you use a serial adapter that supports shared interrupts in an ISA machine. If you are using such an adapter you must take care not to use more than one interrupt level for each COMi load. You may use any combination of interrupt levels MCA machines. ═══ ═══ A first level DosOpen is the first time a device is opened by any application. Any other DosOpen calls, without first calling DosClose, are considered second level opens. When all applications have closed a device then the next DosOpen for that device will, again, be considered a first level DosOpen. The device driver returns some device operating parameters back to device driver defaults whenever a first level DosOpen occurs. Device driver operating parameters that are set back to device driver defaults are: o Handshaking Parameters o Time-out Values o Time-out Processing o Stream Filters Note: COMi start-up defaults are configurable by the user. The parameters in the above list are returned to defaults defined explicitly by the user or implicitly by OS/tools. If the user has not defined a given parameter default during configuration that parameter will be returned to the default defined by OS/tools. ═══ ═══ Industry Standard Architecture Machines that are compatible with the IBM AT personal computer are of this type. IBM and AT are registerd trademarks of International Business Machines. ═══ ═══ Micro Channel Architecture. Machines that are compatible with the IBM PS/2 are of this type. IBM, Micro Channel, and PS/2 are registerd tradmarks of International Business Machines. ═══ ═══ The active device is the device selected from the "Device | Select Device..." menu dialog box. The name of the currently active device is displayed in the title bar of the COMscope main window, in the title bar of all COMscope monitor and control dialog boxes, and is shown as the title of any visible icon when a COMscope instance has been minimized. ═══ ═══ A COM device's main purpose in life is to send/receive data to/from some external device. All data written to a device, and/or read from a device, is considered to be that device's I/O Data Stream. Once a valid device has been selected COMscope can be made to capture, and save, any data that is part of that I/O Data Stream. The bytes of an I/O Data Stream are stored in the order in which they are transmitted and/or received. ═══ ═══ Ordinarily each byte received or transmitted is displayed in order of transfer to/from the hardware, with each new byte is placed for viewing into the next character position on the screen. When display compression is selected the character position is not incremented when a received byte follows a transmitted byte. ═══ ═══ Each DEVICE=comdd.SYS statement in your CONFIG.SYS file is considered a load of the COMi Asynchronous Device Driver. ═══ ═══ You can check (select) a button either by clicking mouse button one on the item or by using the TAB and/or cursor keys to move so the required item has the focus then pressing the space bar. ═══ ═══ A symbol that shows that a menu choice is currently active. ═══ ═══ In the lexical display format only characters that are not excluded by the user with display filters are displayed. ═══ ═══ When the lexical display format is in the "line" oriented mode the transmit and receive streams can be synchronized. This means that a stream direction being synchronized "to" is displayed starting at the first character of that "line" and the stream direction that is to be in synchronization is displayed starting at the first character of the first "line" the begins immediately after the first character of the sync to stream direction. ═══ ═══ Stream direction is either into the device (receive), or out of the device (transmit). ═══ ═══ Different adapter manufacturers use different schemes to allow shared interrupts in ISA machines. Currently the COMi device driver supports the following schemes: o Interrupt ID register is at the adapter base I/O address +7 Sealevel Systems COMM+8 and Turbo COMM+4, Comtrol Hostess, and Quatech ES-XXX and QS-XXX Note: The Quatech adapters mirror the ID register at all device base I/O addresses +7 o Interrupt ID register is at a user defined location and varies with the interrupt level used DigiBoard PC/4, PC/8, and PC/16 ═══ ═══ IBM, OS/2, PS/2, and Micro Channel are trademarks of International Business Machines. ═══ ═══ Windows is a trademark of Microsoft, Incorporated.