home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cscope.zip / COMI.INF (.txt) < prev    next >
OS/2 Help File  |  1995-07-10  |  35KB  |  966 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4. COMi is a multi-port asynchronous serial device driver for the OS/2* operating 
  5. system.  This version of COMi will work in any system running OS/2 2.0 and 
  6. above.  There is a different version for OS/2 1.x that is still available and 
  7. supported by OS/tools. 
  8.  
  9. By multi-port we mean that with COMi there is no limit (logically) to the 
  10. number of COM devices that can be made available to OS/2 sessions or 
  11. applications.  There is a practical limit, of course, because there is a limit 
  12. to the number of COM devices that can be installed in any single system 
  13. (server, client, workstation, CPU).  COMi will allow you to install devices 
  14. with names from COM1 to COM99. 
  15.  
  16.  
  17. ΓòÉΓòÉΓòÉ 2. Installation ΓòÉΓòÉΓòÉ
  18.  
  19. COMi comes with an easy to use installation program (INSTALL.EXE).  This 
  20. program can transfer all required files to the directories of your choice, 
  21. create a desktop folder and necessary program objects, and initiate the 
  22. configuration process. 
  23.  
  24. If you have multiple COMi licenses you can reuse a COMi initialization file for 
  25. similar installations by copying that initiaization file to the distribution 
  26. diskette.  When INSTALL finds a COMi initialization file in the directory it is 
  27. run from it will transfer that file to the installation destination directory. 
  28. The transferred COMi initialization file will be presented for modification 
  29. during each subsequent installation process. 
  30.  
  31. Multiple licenses for COMi can be installed from a network drive or directory. 
  32. To do this you must first use INSTALL to transfer both COMi and INSTALL to a 
  33. network drive, then complete the configuration process just as though you were 
  34. installing it to a local drive. 
  35.  
  36. Once installation and configuration are complete you can run INSTALL on a 
  37. workstation from the network directory to install COMi to that workstation. 
  38. Any initialization file you created in the INSTALL (network) directory will 
  39. also be transferred to the workstation.  You can then make any necessary 
  40. changes to the initialization file by selecting the Config COMi... menu item 
  41. after INSTALL has transferred the required files to the local drive. 
  42.  
  43.  
  44. ΓòÉΓòÉΓòÉ 2.1. Installing Print Spooler Support ΓòÉΓòÉΓòÉ
  45.  
  46. To install and configure COMi Print Spooler support you must have elected to 
  47. transfer the spooler support files while installing COMi by selecting the 
  48. "Print Spooler Utilities" check box in the "Install Options" dialog, configured 
  49. COMi for your serial hardware, and you must have re-booted your machine since 
  50. that install session. 
  51.  
  52. Once you have completed transferring the files, installing and configuring 
  53. serial devices for COMi access, and re-booting your machine, you will need to 
  54. do the following: 
  55.  
  56.  1. Click mouse button two (usually the right button) on a local printer 
  57.     object. 
  58.  
  59.     If you have not created a local printer object yet, then you will need to 
  60.     drag a non-network printer object from the "Templates" folder onto your 
  61.     desktop. 
  62.  
  63.     If you are creating a printer object as part of this installation then skip 
  64.     to item three, as the printer object's settings notebook will have been 
  65.     presented immediately after you drag the printer object from the 
  66.     "Templates" folder. 
  67.  
  68.     When creating a new printer object, you will also have to select a printer 
  69.     driver and will possibly need to set other parameters in the printer's 
  70.     settings notebook. 
  71.  
  72.  2. Select the "Settings" menu item from the pop-up menu that appears. 
  73.  
  74.  3. Click on the "Output" tab from the settings notebook. 
  75.  
  76.  4. Click mouse button two on any port icon in the container window. 
  77.  
  78.  5. Select the "Install" menu item.  A new dialog will be presented. 
  79.  
  80.  6. In the "Directory" entry field enter the following (without the quotes): 
  81.     "\OS2\DLL", then press the <ENTER> key or select the "Refresh" button. 
  82.  
  83.     The Spooler software will read each spooler support library in that 
  84.     directory, including the COMi spooler support library, and show an icon in 
  85.     the container area of the dialog for each device these spooler support 
  86.     libraries support. 
  87.  
  88.     Only ports that have been installed with a COMi configuration program 
  89.     (COMscope or Install) will be available for installation as spooler ports 
  90.     by the system spooler software. COMi must have been loaded at system 
  91.     initialization before COMi print Spooler support can be installed, or 
  92.     accessed. 
  93.  
  94.  7. Select one, or more, of the COMi Spooler ports and select the "Install" 
  95.     button. 
  96.  
  97.  8. When the Spooler software is finished installing the ports you have 
  98.     selected, it will show a message box indicating that the ports you selected 
  99.     have been installed.  Click on the "OK" button. 
  100.  
  101.  9. When you are through installing print spooler ports, click on the "Cancel" 
  102.     button. 
  103.  
  104. Once you have installed at least one COMi spooler port using this procedure, 
  105. you will be able to install and delete spooler ports from the COMi 
  106. Configuration program (either Install or COMscope). 
  107.  
  108. You can set the port parameters to match the requirements of a printer by 
  109. clicking mouse button two on an icon in the container area and selecting the 
  110. "Settings" menu item.  Help for setting port printer initialization parameters 
  111. will be available once you have entered the setup dialog. 
  112.  
  113. Note:  Configuration of COMi print spooler ports for device and printer 
  114.        communications parameter initialization will always have to be completed 
  115.        from the printer object's settings notebook, as described here.  The 
  116.        system spooler software will not be aware of any initialization 
  117.        parameters selected from the COMi configuration program. 
  118.  
  119.  
  120. ΓòÉΓòÉΓòÉ 2.2. Configuration ΓòÉΓòÉΓòÉ
  121.  
  122. The COMi device driver can only be configured using COMscope or Install.  These 
  123. two programs create, or modify, an initialization file for the device driver. 
  124. Each time your system is started, COMi reads this initialization file to 
  125. determine where to look for serial devices and how to configure those devices. 
  126.  
  127. Additional Information: 
  128.  
  129. o Industry Standard Architecture 
  130. o Micro Channel Architecture 
  131. o Starting Configuration Program 
  132.  
  133.  
  134. ΓòÉΓòÉΓòÉ 2.2.1. Industry Standard Architecture Machines ΓòÉΓòÉΓòÉ
  135.  
  136. The COMi device driver will not operate in ISA systems until a valid 
  137. initialization file is created.  There can be no access to COM devices in ISA 
  138. systems until the configuration process has been completed and a valid 
  139. initialization file has been created. 
  140.  
  141.  
  142. ΓòÉΓòÉΓòÉ 2.2.2. Micro Channel Architecture Machines ΓòÉΓòÉΓòÉ
  143.  
  144. The COMi device driver does not need an initialization file to initialize the 
  145. eight pre-defined serial ports in a PS/2* or other MCA system that has ABIOS or 
  146. equivalent. You will need to create an initialization file for MCA machines 
  147. only if you: 
  148.  
  149.  1. Need to support more than eight serial devices. 
  150.  2. Want to access devices that may be owned by other serial device drivers. 
  151.  3. Need to support hardware that has base I/O addresses and/or interrupt 
  152.     levels different than the MCA pre-defined serial device base addresses 
  153.     and/or interrupt levels. 
  154.  4. Your MCA system does not have an ABIOS or equivalent. 
  155.  
  156.  
  157. ΓòÉΓòÉΓòÉ 2.2.3. Starting Configuration Program ΓòÉΓòÉΓòÉ
  158.  
  159. During the installation process the configuration process is started by the 
  160. installation program supplied with COMi.  After Installation is completed you 
  161. will need to re-boot your machine before you will be able to access serial 
  162. devices with COMi. 
  163.  
  164. After installation you can configure COMi either from a program object (icon) 
  165. or from an OS/2* command prompt. 
  166.  
  167. Starting from a program object: 
  168.  
  169. If there is a program object for COMscope or Install you can double click on 
  170. the object to begin the configuration process. 
  171.  
  172. If there is no program object for COMscope or Install, you can either start the 
  173. program from the command line (in an OS/2 window or full screen session) or 
  174. create a program object using the following procedure: 
  175.  
  176.  1. Open the Templates folder. 
  177.  
  178.  2. Drag a Program object off onto the desktop. 
  179.  
  180.  3. When the settings notebook appears select the Program tab, if that page is 
  181.     not currently shown. 
  182.  
  183.  4. In the Path and File Name field, enter the absolute path and file name of 
  184.     the configuration program. 
  185.  
  186.     Example:  C:\COMM\COMscope.EXE 
  187.  
  188.  5. In the Working Directory field enter the absolute path, to the 
  189.     configuration program. 
  190.  
  191.     Example:  C:\COMM 
  192.  
  193.  6. Select the General tab. 
  194.  
  195.  7. Enter the program name in the Title field. 
  196.  
  197.     Example:  COMi Configuration 
  198.  
  199.  8. Close the settings notebook by double clicking on the system menu (small 
  200.     box in the upper left-hand corner). 
  201.  
  202. Starting from an OS/2 command prompt: 
  203.  
  204. If the COMi device driver is loaded you will only need to enter the program 
  205. name on the command line. 
  206.  
  207. Example:  [C:\]COMscope <ENTER> 
  208.  
  209. If the COMi device driver is not loaded you will be to prompted for a path and 
  210. file name after starting the COMscope or Install.  The COMi initialization file 
  211. must be located in the same directory as the device driver, and must have the 
  212. same base name as the drvice driver file with a ".INI" extension. 
  213.  
  214.  
  215. ΓòÉΓòÉΓòÉ 3. Extensions ΓòÉΓòÉΓòÉ
  216.  
  217. COMi has extensions that allow it to perform in some special situations.  These 
  218. extensions are: 
  219.  
  220.  1. Modem interrupts can be disabled for any device.  Enabling this extension 
  221.     will cause modem signals to be polled when handshaking protocols are 
  222.     enabled that use modem signaling.  The device driver will function 
  223.     normally, just not as efficiently. The purpose for this extension is to 
  224.     support serial adapters that inadvertently left one or more modem signal 
  225.     input pins floating, and will only be required if an application is going 
  226.     to enable hardware handshaking when such an adapter is being used. 
  227.  
  228.  2. The device driver can be configured to allow applications to have control 
  229.     of the OUT1 output signal of any device.  The purpose of this extension is 
  230.     to support adapters that use the OUT1 pin to control some special function 
  231.     (e.g., baud rate clock selection, or RS-485 tri-state enable).  Support is 
  232.     included for control of the LOOP function, but is not very useful at the 
  233.     normal application level. 
  234.  
  235.  3. The baud rate divisor can be specified explicitly by an application.  When 
  236.     this feature is enabled the application selected baud rate value is written 
  237.     directly to, or read directly from, the baud rate registers of the device. 
  238.     This extension is to support adapters that allow users to select 
  239.     non-standard baud rate clocks.  When using this extension, an application 
  240.     will need to calculate the proper baud rate divisor for their particular 
  241.     adapter set-up. 
  242.  
  243.  4. Normally each user defined serial device (UART) is tested to determine if 
  244.     the defined device is a supported UART, if the defined hardware interrupt 
  245.     level is available for use by the device driver, if the device is 
  246.     physically connected to the defined hardware interrupt level, and if the 
  247.     device has hardware buffering capabilities.  This extension prevents all 
  248.     but the test for hardware interrupt availability from being performed.  The 
  249.     purpose of this extension is to allow for UARTs that are part of a 
  250.     motherboard chip set that may not be initialized at the time the device 
  251.     driver is loaded (initialized), or other UARTs that may not be completely 
  252.     compatible with the 8250 standard, but close enough to work with COMi. 
  253.  
  254.  5. Each device can be configured to enable the OUT1 signal at initialization. 
  255.     When this extension is enabled the OUT1 signal is enabled at the very 
  256.     beginning of the initialization sequence and will remain enabled for that 
  257.     entire OS/2*  session, unless Extended Modem Signals is enabled and an 
  258.     extension aware application disables that signal. 
  259.  
  260.  6. COMi will allow you to connect multiple devices to a single interrupt in 
  261.     ISA machines.  Interrupt sharing in an ISA machine will NOT work unless 
  262.     your hardware is specifically designed to do so. 
  263.  
  264.  7. COMi will support the Texas Instruments 16C550B UART in the FIFO mode. 
  265.     This UART requires special processing when its receive FIFO is enabled. 
  266.  
  267.  8. The COMi device driver has other extensions that are application specific. 
  268.     if you have an application that takes advantage of one or more of these 
  269.     extensions, that application's documentation will explain the necessary 
  270.     steps for use of the required extensions. 
  271.  
  272.  9. The most important extension in COMi, we feel, is support for COMscope. 
  273.     COMscope and COMi allow for total control and monitoring of serial devices. 
  274.     COMscope can monitor all the device and device driver states an application 
  275.     can access.  COMscope can also capture and display both the transmit and 
  276.     receive streams. 
  277.  
  278.  
  279. ΓòÉΓòÉΓòÉ 4. API Compatibility ΓòÉΓòÉΓòÉ
  280.  
  281. The COMi application interface is exactly as described in the "Physical Device 
  282. Driver" technical reference for Category One, Asynchronous Serial Device 
  283. Drivers. COMi supports all features and functions as described in that 
  284. reference, except the Enhanced Mode functions (functions 0x54 and 0x74). 
  285.  
  286. Differences from COM.SYS: 
  287.  
  288. There are some differences in how COMi is initialized compared to the COM.SYS 
  289. device driver.  Here is a list of the differences: 
  290.  
  291.  1. COM.SYS initializes at 1200 baud.  COMi defaults to 9600 baud. 
  292.  
  293.  2. COM.SYS initializes to a protocol of seven data bits, even parity, and one 
  294.     stop bit.  COMi defaults to a protocol of eight data bits, no parity, and 
  295.     one stop bit. 
  296.  
  297.  3. COM.SYS defaults with hardware buffer functionality set to Automatic 
  298.     Protocol Override with a receive trigger level of eight bytes.  COMi 
  299.     defaults to hardware buffers on, with a receive trigger level of fourteen 
  300.     bytes and a transmit buffer depth of sixteen bytes. 
  301.  
  302.  4. COM.SYS has fixed receive and transmit buffers.  COMi's buffer sizes are 
  303.     user definable. 
  304.  
  305.  5. All COM.SYS defaults are fixed.  With COMi, all startup defaults, including 
  306.     protocol, baud rate, buffers sizes, read and write time-out processing and 
  307.     time-out values, FIFO functionality, and handshaking protocols are user 
  308.     definable.  This feature allows COMi to use startup defaults defined by the 
  309.     user. 
  310.  
  311.  6. COM.SYS does not support COMscope or COMspool, COMi does (this is 
  312.     important!). 
  313.  
  314. There should be one other difference noted here, though it pertains only to 
  315. documentation.  The "Physical Device Driver" technical reference stated that 
  316. the COM.SYS device driver starts up with CTS and DTR output handshaking, DSR 
  317. input sensitivity, and RTS input handshaking, enabled.  The COM.SYS device 
  318. driver starts up with no handshaking enabled and neither does COMi, unless the 
  319. end-user makes it so. 
  320.  
  321.  
  322. ΓòÉΓòÉΓòÉ 5. System and Adapter Support ΓòÉΓòÉΓòÉ
  323.  
  324. COMi can work with any adapter that uses any of the required serial devices, in 
  325. any combination and in any quantity your OS/2* system can accommodate.  There 
  326. are some restrictions and caveats, though, and these are what this part of the 
  327. manual will explain. 
  328.  
  329. COMi is designed to allow an OS/2 system to access multiple serial devices at 
  330. baud rates of 115.2K and above, using "dumb", inexpensive, Universal 
  331. Asynchronous Receiver Transmitters (UARTs).  The device driver will support any 
  332. UART of the 16550 family. This includes the 8250, 8250A, 16450, 16450A, 16550A, 
  333. 16550B, and some others, including most built-in UARTs that are part of a 
  334. motherboard chip set. 
  335.  
  336. Systems Supported: 
  337.  
  338. o Micro Channel Architecture Machines 
  339. o Industry Standard Architecture Machines 
  340.  
  341. ISA shared interrupt capable adapters supported: 
  342.  
  343. o Serial Adapters Supported 
  344.  
  345. Devices Supported: 
  346.  
  347. o 16550 UART 
  348. o 16450 UART 
  349. o 8250 UART 
  350.  
  351.  
  352. ΓòÉΓòÉΓòÉ 5.1. 16550 UART Support ΓòÉΓòÉΓòÉ
  353.  
  354. For now, the 16550 UART is the device of choice for OS/2*  systems.  These 
  355. UARTs have both receive and transmit First In First Out (FIFO) buffers.  These 
  356. buffers allow a greater throughput with less interrupt overhead. 
  357.  
  358. When the 16550 UART's FIFO modes are enabled the device will normally interrupt 
  359. the CPU every 14 received characters or every 16 transmitted characters.  This 
  360. means that a device receiving data at 57600 baud will get an interrupt about 
  361. every 2.5 milliseconds.  For comparison, without FIFOs, a device running at 
  362. 57600 baud would get an interrupt about every 170 microseconds. 
  363.  
  364. The COMi device driver will automatically determine if any device it is 
  365. configured to support has hardware buffers, and will take full advantage of 
  366. those buffers when they are available 
  367.  
  368.  
  369. ΓòÉΓòÉΓòÉ 5.2. 16450 UART Support ΓòÉΓòÉΓòÉ
  370.  
  371. It is not recommended that you use any adapter that contains 16450 UARTs. 
  372. These UARTs have no hardware buffering capabilities and will interrupt the CPU 
  373. whenever a character is received or transmitted.  This means that if you are 
  374. running a communications program at 9600 baud there will be an interrupt about 
  375. every one millisecond, possibly more if your application is receiving and 
  376. streaming data (transmitting/receiving large strings) in a full duplex mode. 
  377.  
  378.  
  379. ΓòÉΓòÉΓòÉ 5.3. 8250 UART Support ΓòÉΓòÉΓòÉ
  380.  
  381. As with the 16450 UART, the 8250 UART does not contain FIFOs, and it is not 
  382. recommended that you use serial adapters that use 8250 UARTs in OS/2*  systems. 
  383. COMi will work with these UARTs but your system performance may be greatly 
  384. diminished when using them at higher baud rates. 
  385.  
  386.  
  387. ΓòÉΓòÉΓòÉ 5.4. MCA Support ΓòÉΓòÉΓòÉ
  388.  
  389. MCA machines are designed to allow adapters and/or devices to share hardware 
  390. interrupts.  This architecture makes it easy for COMi to support any number of 
  391. serial devices in any combinations of device base addresses and hardware 
  392. interrupts, with the following recommendations and restrictions: 
  393.  
  394.  1. Try to evenly distribute the number of devices per hardware interrupt, or 
  395.     use the least number of devices per hardware interrupt level when using 
  396.     higher baud rates. 
  397.  
  398.  2. Try not to use more than eight serial devices per hardware interrupt level. 
  399.  
  400.  3. If you need more than eight serial ports you must use adapters that support 
  401.     base addresses other than the eight pre-assigned MCA serial device base 
  402.     addresses and hardware interrupt levels. 
  403.  
  404.  
  405. ΓòÉΓòÉΓòÉ 5.5. ISA Support ΓòÉΓòÉΓòÉ
  406.  
  407. ISA machines do not normally allow adapters, or devices, to share hardware 
  408. interrupt levels.  Because of this (deficiency) there are certain restrictions 
  409. for configuring the device driver for access to serial adapters and multiple 
  410. serial devices.  These restrictions include: 
  411.  
  412.  1. Shared interrupts are supported only when used with adapters that support 
  413.     shared interrupts. 
  414.  2. If you assign the same hardware interrupt level to two different adapters, 
  415.     or devices, that do not support shared interrupts, you may lose received 
  416.     characters. 
  417.  3. If you assign the same hardware interrupt level to two different adapters, 
  418.     or devices, that do not support shared interrupts, you will probably 
  419.     lock-up your system, especially if you are not accessing the port in a 
  420.     separate thread from your window procedure. 
  421.  4. You may connect multiple, non-interrupt sharing, devices to a single 
  422.     interrupt without problems if the device is connected to the bus in a 
  423.     "wired-OR" circuit, and if you open and access only one of those devices at 
  424.     a time. 
  425.  
  426. Related Information: 
  427.  
  428. o Installing ISA Serial Devices 
  429. o Serial Adapters Supported 
  430. o Shared Interrupt Adapter Types 
  431.  
  432.  
  433. ΓòÉΓòÉΓòÉ 6. Installing ISA Serial Devices ΓòÉΓòÉΓòÉ
  434.  
  435. If you are installing serial device support in an ISA machine and you intend to 
  436. connect multiple devices to a single hardware interrupt level you need to be 
  437. aware of the following: 
  438.  
  439.  1. Your adapter must have special features to support interrupt sharing. 
  440.  
  441.  2. The adapter's special features that allow interrupt sharing must be enabled 
  442.     and configured correctly. 
  443.  
  444.  3. You must know the hardware address of your adapter's interrupt status or ID 
  445.     register. 
  446.  
  447.  4. You must open the adapter set-up dialog by clicking on the Adpter Set-up 
  448.     button from the Device Driver Configuration dialog to specify the adapter 
  449.     type, hardware interrupt level, and address of the interrupt status/ID 
  450.     register in order to define more than one device to a hardware interrupt 
  451.     level. 
  452.  
  453. Note:  Sharing interrupts on an MCA machine requires no special configuation. 
  454.        Please note, though, that it is not recommended that you connect more 
  455.        than eight devices to any one hardware interrupt level. 
  456.  
  457. Related Information: 
  458.  
  459. o Serial Adapters Supported 
  460. o Shared Interrupt Adapter Types 
  461.  
  462.  
  463. ΓòÉΓòÉΓòÉ 6.1. Shared Interrupt Adapter Types ΓòÉΓòÉΓòÉ
  464.  
  465. In order for COMi to support shared interrupts on an ISA machine, an adapter of 
  466. one of the types described below must be used. 
  467.  
  468. Type One: 
  469.  
  470.  1. All devices on an adapter can be connected to a single IRQ line. 
  471.  2. The adapter has an interrupt ID register at adapter base I/O address +7. 
  472.  3. Each bit in the interrupt ID register represents one, and only one, serial 
  473.     device. 
  474.  4. When there is no device with a pending interrupt, the ID register will be 
  475.     read as a zero. 
  476.  
  477. Type Two: 
  478.  
  479.  1. A Texas Instruments 16C550B UARTs are installed on the adapter. 
  480.  2. All devices on an adapter can be connected to a single IRQ line. 
  481.  3. The adapter has an interrupt ID register at adapter base I/O address +7. 
  482.  4. Each bit in the interrupt ID register represents one, and only one, serial 
  483.     device. 
  484.  5. When there is no device with a pending interrupt, the ID register will be 
  485.     read as a zero. 
  486.  
  487. Type Three: 
  488.  
  489.  1. All devices on an adapter can be connected to a single IRQ line. 
  490.  2. The adapter has an interrupt ID register at a fixed or user defined 
  491.     address. 
  492.  3. Each bit in the interrupt ID register represents one, and only one, serial 
  493.     device. 
  494.  4. When there is no device with a pending interrupt, the ID register will be 
  495.     read as a zero. 
  496.  
  497. Type Four: 
  498.  
  499.  1. The adapter has an interrupt ID register at a user definable address. 
  500.  2. The address of the interrupt ID register is as defined by the user for odd 
  501.     interrupts (3, 5, 7, 9, 11, 13, 15) and is at the user defined address +1 
  502.     for even interrupts (2, 4, 6, 8, 10, 12, 14). 
  503.  3. The value read from the interrupt ID register indicates the highest 
  504.     priority device that has an interrupt pending. 
  505.  4. When there is no device with a pending interrupt, the ID register will be 
  506.     read as all ones (0xFF). 
  507.  
  508.     This adapter type should be used to support DigiBoard's PC/4 and PC/8 
  509.     serial adapters, only. 
  510.  
  511. Type Five: 
  512.  
  513.  1. All devices on an adapter can be connected to a single IRQ line. 
  514.  2. The adapter has an interrupt ID register at a fixed address that is based 
  515.     on which of four available PALs is installed on the adapter. 
  516.  3. The value read from the interrupt ID register indicates the highest 
  517.     priority device that has an interrupt pending. 
  518.  4. When there is no device with a pending interrupt, the ID register will be 
  519.     read as all ones (0xFF). 
  520.  
  521.     This adapter type should be used to support DigiBoard's PC/16 serial 
  522.     adapters, only. 
  523.  
  524. Related Information: 
  525.  
  526.    o Serial Adapters Supported 
  527.  
  528.  
  529. ΓòÉΓòÉΓòÉ 6.2. Serial Adapters Supported ΓòÉΓòÉΓòÉ
  530.  
  531. COMi has been tested with the following serial adapters. 
  532.  
  533. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  534. ΓöéType ΓöéManufacturer      ΓöéModel       Γöé
  535. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  536. ΓöéOne  ΓöéSealevel Systems  ΓöéCOMM+4      Γöé
  537. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  538. Γöé     Γöé                  ΓöéTURBOCOMM+8 Γöé
  539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  540. Γöé     ΓöéGlobetek          ΓöéFour Port   Γöé
  541. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  542. Γöé     ΓöéQuatech           ΓöéES-xxx      Γöé
  543. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  544. Γöé     Γöé                  ΓöéQS-xxx      Γöé
  545. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  546. ΓöéTwo  ΓöéComtrol           ΓöéHostess RJ45Γöé
  547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  548. Γöé     Γöé                  ΓöéHostess RJ11Γöé
  549. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  550. ΓöéThreeΓöéConnect Tech      ΓöéDFLEX       Γöé
  551. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  552. ΓöéFour ΓöéDigiBoard         ΓöéPC/4        Γöé
  553. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  554. Γöé     Γöé                  ΓöéPC/8        Γöé
  555. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  556. ΓöéFive ΓöéDigiBoard         ΓöéPC/16       Γöé
  557. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  558. COMi will support shared interrupts with all of the adapters listed above and 
  559. any other adapter that uses one of the interrupt sharing schemes described 
  560. under COMi Adapter Types. 
  561.  
  562.  
  563. ΓòÉΓòÉΓòÉ 7. Troubleshooting ΓòÉΓòÉΓòÉ
  564.  
  565. Believe it or not, the COMi installation and configuration process is not 
  566. always as simple and straight forward as we would like it to be. 
  567.  
  568. The following is help and explanation for the most common problems encountered 
  569. when attempting to install, configure, and access the COMi device driver: 
  570.  
  571. o Hardware Interrupt Level Selection 
  572. o Base I/O Address Selection 
  573. o Errors During System Start-up 
  574. o Loading with COM.SYS 
  575. o Run-time Problems 
  576. o Read/Write Errors 
  577. o Device I/O control (DosDevIOCtl) Errors 
  578. o Lock-up, Pointer Moves 
  579. o Lock-up, Pointer Does Not Move 
  580.  
  581.  
  582. ΓòÉΓòÉΓòÉ 7.1. Hardware Interrupt Level Selection ΓòÉΓòÉΓòÉ
  583.  
  584. The COMi configuration program will not normally allow you to configure more 
  585. than one device per hardware interrupt level on ISA machines unless you have 
  586. selected an adapter type from the Adpter Set-up dialog, supplied an interrupt 
  587. status register address, and selected an interrupt level. 
  588.  
  589. CAUTION  If you supply an interrupt status register address and there is no 
  590.          such register with that function your, system WILL lock-up. 
  591.  
  592. You may configure more than one device to share an interrupt level by selecting 
  593. the Extensions... button when configuring a device, and selecting the "Share 
  594. Interrupt Connection" check box. 
  595.  
  596. In order to share interrupts using this "extension", your hardware must have a 
  597. "wired-OR" interrupt circuit that ties each device to the system board's 
  598. Interrupt Request (IRQ) circuit.  You can expect this to be the case any time 
  599. you are using a multi-device adapter that allows you to connect more than one 
  600. device to any one interrupt level.  Adapters that contain only one serial 
  601. device rarely use this type of circuit. 
  602.  
  603. In general it is not a good idea to configure devices on more than one adapter 
  604. to share interrupts.  The exception is when your are using any adapter that 
  605. specifically supports multi-adapter interrupt sharing. 
  606.  
  607. MCA machines are designed to allow interrupt sharing.  You can select any 
  608. hardware interrupt level, though we do not recommend assigning more than eight 
  609. devices to any one hardware interrupt level. 
  610.  
  611.  
  612. ΓòÉΓòÉΓòÉ 7.2. Base I/O Address Selection ΓòÉΓòÉΓòÉ
  613.  
  614. The configuration programs will not allow you to select a base I/O address for 
  615. any device that is assigned to another COMi controlled device, nor will it 
  616. allow you to select a base address that is not at an eight byte boundary. 
  617.  
  618.  
  619. ΓòÉΓòÉΓòÉ 7.3. Errors During System Start-up ΓòÉΓòÉΓòÉ
  620.  
  621. During each load of the COMi device driver each defined device is normally 
  622. tested to determine the following: 
  623.  
  624.  1. If the device is a qualified UART. 
  625.  2. If the configured hardware interrupt level is available. 
  626.  3. If the device is connected to the configured hardware interrupt level. 
  627.  4. If the configured interrupt status register (if any) is correct. 
  628.  5. If the UART has FIFO capabilities (hardware buffers). 
  629.  
  630. Any device failing the first four tests will not be installed and will not be 
  631. available at run-time.  If you KNOW that the device is valid as defined, you 
  632. can select Disable Start-up UART Tests in the Extensions dialog box for this 
  633. device.  Enabling this extension will cause all tests to be bypassed except the 
  634. interrupt level availability test (number two). 
  635.  
  636. This may be necessary if you have a UART that is built into the motherboard 
  637. chip set, or a device that is not quite compatible with the 8250/16450/16550 
  638. UART. 
  639.  
  640.  
  641. ΓòÉΓòÉΓòÉ 7.4. Loading with COM.SYS ΓòÉΓòÉΓòÉ
  642.  
  643. COMi will work when COM.SYS and VCOM.SYS are loaded.  If you want to use both 
  644. COMi and COM.SYS you will need to insure that COM.SYS is loaded before COMi. 
  645. The configuration program will normally place COMi "DEVICE=" statements at the 
  646. end of the CONFIG.SYS file, so this should not be a problem. 
  647.  
  648. You will also have to refrain from naming COMi devices with the same names 
  649. COM.SYS will use.  Naming a COMi device COM1 through COM4 will cause COM.SYS to 
  650. drop access to any device it owns with those device names.  If you know that 
  651. you do not have serial hardware at a traditional, or pre-defined, COMx location 
  652. you can use that device name without problems. 
  653.  
  654. If you want to use COM.SYS for some COM ports and COMi for other's you need 
  655. only configure COMi to use the device name (COMx) you want COM.SYS to drop. 
  656.  
  657. Additional Considerations: 
  658.  
  659.  1. ISA machines 
  660.  2. MCA machines 
  661.  
  662.  
  663. ΓòÉΓòÉΓòÉ 7.4.1. ISA Considerations ΓòÉΓòÉΓòÉ
  664.  
  665. ISA machines have traditionally defined serial devices for COM1 through COM4. 
  666. Below is a listing of traditional ISA serial port specifications. 
  667.  
  668. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  669. ΓöéDevice   ΓöéBase     ΓöéInterruptΓöé
  670. ΓöéName     ΓöéAddress  ΓöéLevel    Γöé
  671. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  672. ΓöéCOM1     Γöé0x3F8    Γöé4        Γöé
  673. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  674. ΓöéCOM2     Γöé0x2F8    Γöé3        Γöé
  675. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  676. ΓöéCOM3     Γöé0x3E8    Γöé4        Γöé
  677. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  678. ΓöéCOM4     Γöé0x2E8    Γöé3        Γöé
  679. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  680.  
  681. The COM.SYS device driver will normally connect only to COM1 and COM2. 
  682. However, you can request access to COM3 and COM4 by defining the port number, 
  683. base address, and interrupt level on the "DEVICE=d:\path\COM.SYS" command line 
  684. in the CONFIG.SYS file.  Using this method will not allow you to share 
  685. interrupts, but you could get sequential access to devices defined with the 
  686. same hardware interrupt level. 
  687.  
  688. If you want to have COM.SYS and VCOM.SYS control any of the above listed 
  689. devices you will not be able to use their respective COMx device names when 
  690. configuring COMi. 
  691.  
  692. For information on how to configure COM.SYS for COM3 and COM4 access enter 
  693. "HELP COM.SYS" from any command prompt, or search in the "Command Reference" 
  694. for "COM.SYS". 
  695.  
  696.  
  697. ΓòÉΓòÉΓòÉ 7.4.2. MCA Considerations ΓòÉΓòÉΓòÉ
  698.  
  699. MCA machines have eight pre-defined serial port designations.  COM1 through 
  700. COM4 can be controlled by COM.SYS.  Below is a listing of pre-defined MCA 
  701. serial port specifications. 
  702.  
  703. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  704. ΓöéDevice   ΓöéBase     ΓöéInterruptΓöé
  705. ΓöéName     ΓöéAddress  ΓöéLevel    Γöé
  706. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  707. ΓöéCOM1     Γöé0x3F8    Γöé4        Γöé
  708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  709. ΓöéCOM2     Γöé0x2F8    Γöé3        Γöé
  710. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  711. ΓöéCOM3     Γöé0x3220   Γöé3        Γöé
  712. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  713. ΓöéCOM4     Γöé0x3228   Γöé3        Γöé
  714. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  715. ΓöéCOM5     Γöé0x4220   Γöé3        Γöé
  716. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  717. ΓöéCOM6     Γöé0x4228   Γöé3        Γöé
  718. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  719. ΓöéCOM7     Γöé0x5220   Γöé3        Γöé
  720. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  721. ΓöéCOM8     Γöé0x5228   Γöé3        Γöé
  722. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  723.  
  724. COM.SYS will allow you to access up to four devices from this list and will 
  725. automatically use COM1 through COM4 for the first four serial devices it 
  726. detects from the above list.  The COMi device driver will also automatically 
  727. configure itself, but it will allow you to access all eight devices defined in 
  728. the list above. 
  729.  
  730. COMi will try to automatically configure itself for any unowned device it 
  731. detects in the list above.  If COM.SYS or any other ABIOS aware serial device 
  732. driver is loaded, COMi will not install any COMx port or device that is already 
  733. owned by a previously loaded device driver.  You will need to create an 
  734. initialization file with a COMi configuration program (COMscope or Install) if 
  735. you want COMi to control any device that a previously loaded device driver 
  736. owns. 
  737.  
  738. If you need access to more than eight serial devices and/or serial devices that 
  739. are not configured as defined in the above table, you will also need to create 
  740. an initialization file with a COMi configuration program. 
  741.  
  742.  
  743. ΓòÉΓòÉΓòÉ 7.5. Run-time Problems ΓòÉΓòÉΓòÉ
  744.  
  745. Improperly configuring COMi and/or the serial adapter can cause various kinds 
  746. of problems, none of which result in increased productivity. 
  747.  
  748. The following items are the most common problems: 
  749.  
  750. o Read/Write Errors 
  751. o Device I/O control (DosDevIOCtl) Errors 
  752. o Lock-up, Pointer Moves 
  753. o Lock-up, Pointer Does Not Move 
  754.  
  755.  
  756. ΓòÉΓòÉΓòÉ 7.5.1. Read/Write Errors ΓòÉΓòÉΓòÉ
  757.  
  758. When an application writes to, or reads from, a COMx device, the device driver 
  759. does not normally return to the calling thread until all requested characters 
  760. have been either received or transmitted.  If a time-out occurs before all 
  761. characters have been transmitted, or received, the device driver will return to 
  762. the calling thread with a count of the actual characters written, or read. 
  763.  
  764. An application should test the returned count to determine if it should try to 
  765. re-transmit, or read again, any remaining characters. 
  766.  
  767. Write time-outs normally occur only when some output handshaking has been 
  768. enabled and some event has caused the device driver to stop transmitting before 
  769. it could transmit all of the requested characters.  Read time-outs can occur 
  770. anytime the "far-end" stops transmitting, before all requested characters have 
  771. been received. 
  772.  
  773.  
  774. ΓòÉΓòÉΓòÉ 7.5.2. Device I/O control (DosDevIOCtl) Errors ΓòÉΓòÉΓòÉ
  775.  
  776. See the "Physical Device Driver".  technical reference, Category One, 
  777. Asynchronous Serial Device Drivers, for a complete description of the device 
  778. I/O control commands and their various input and output parameters.  COMi is 
  779. designed to operate according to that application interface. 
  780.  
  781. Your distribution diskette contains a "C" source file that has sample code for 
  782. most of the DosDevIOCtl functions defined in the Technical Reference.  The file 
  783. name is "IOCTL.C". 
  784.  
  785.  
  786. ΓòÉΓòÉΓòÉ 7.5.3. Lock-up, Pointer Moves ΓòÉΓòÉΓòÉ
  787.  
  788. An application has probably tried to read the COM device from the window 
  789. procedure thread, the time-out is set for the default one minute read time-out, 
  790. and no characters are arriving at the UART. 
  791.  
  792. The device driver does not return to the calling thread until no characters 
  793. have been received for the user configured read time-out count.  It is 
  794. recommended that an application access any COM device with a thread separate 
  795. from the thread in which its window procedure is running. 
  796.  
  797. Of course there are other reasons for system lock-up, but this one seems to be 
  798. the most common when accessing COM devices. 
  799.  
  800.  
  801. ΓòÉΓòÉΓòÉ 7.5.4. Lock-up, Pointer Does Not Move ΓòÉΓòÉΓòÉ
  802.  
  803. This problem, when related to COM devices, is almost always caused by improper 
  804. configuration of the device driver and/or serial adapter and/or device, and is 
  805. the result of an endless loop within the interrupt service routine while 
  806. interrupts have been disabled.  Make sure that the COMi device driver is 
  807. configured correctly for your adapter and that the serial adapter and/or device 
  808. is configured as you intended. 
  809.  
  810.  
  811. ΓòÉΓòÉΓòÉ 8. Communications Concepts ΓòÉΓòÉΓòÉ
  812.  
  813. This section is a "catch-all" for information we thought might be useful. 
  814.  
  815. Concepts: 
  816.  
  817. o Why Handshaking? 
  818. o Automatic Protocol Override 
  819.  
  820.  
  821. ΓòÉΓòÉΓòÉ 8.1. Why Handshaking? ΓòÉΓòÉΓòÉ
  822.  
  823. In any system it is important that all real-time activities, like serial 
  824. communications, be truly asynchronous.  Basically this means that no 
  825. information should be lost because the operating system was busy doing 
  826. something else. 
  827.  
  828. In operating systems like DOS, or DOS and Windows**, there is never any 
  829. guarantee the operating system will be able to get to a "real-time" process in 
  830. a timely manner.  Each process in these systems "owns" the machine until it 
  831. relinquishes control.  If a real-time process needs service it has to wait 
  832. until any currently running process has completed. 
  833.  
  834. In OS/2* this is not normally a problem.  Its structure is such that hardware 
  835. interrupts have the highest priority and are serviced almost immediately, and 
  836. other processes are given a time-slice in which to execute. 
  837.  
  838. Problems can occur in two ways.  The first is when hardware interrupts come in 
  839. faster than the operating system can respond.  For asynchronous serial 
  840. communications this problem is addressed mostly by serial devices with hardware 
  841. buffers (FIFOs). 
  842.  
  843. The second problem is that an application may not be able to read and process 
  844. incoming information as fast as the hardware and device driver can receive and 
  845. store information.  This problem is addressed by the handshaking features of 
  846. the serial device driver. 
  847.  
  848. When handshaking is enabled the receiving system will signal the transmitting 
  849. system to stop transmitting when its receive buffer nears full capacity.  The 
  850. transmitting system should stop transmitting when it receives a signal to stop. 
  851.  
  852. In OS/2, a serial device driver must be capable of handshaking without 
  853. intervention or control by the controlling higher level process.  All a 
  854. controlling process needs to do is command the device driver into a handshaking 
  855. mode and the device driver must do all of the processing to be sure that the 
  856. controlling process does not lose any information.  This includes detecting 
  857. when its own receive buffer is nearly full so it can send a "stop transmitting" 
  858. signal and then detecting when its receive buffer has been emptied enough so 
  859. that it can send a "start transmitting" signal.  It also includes detecting 
  860. when the device it is transmitting to has sent a "stop transmitting" or "start 
  861. transmitting" signal and act accordingly. 
  862.  
  863.  
  864. ΓòÉΓòÉΓòÉ 8.2. Why Automatic Protocol Override ΓòÉΓòÉΓòÉ
  865.  
  866. This feature can only be enabled when a device has hardware buffers (FIFOs). 
  867. Normally you would want to enable hardware buffers to reduce system overhead. 
  868. When handshaking is required between this hardware (near-end) and some external 
  869. hardware (far-end) it may be required that a far-end's request to stop 
  870. transmitting be acted upon immediately. 
  871.  
  872. If hardware buffers are enabled it would be possible for that hardware to 
  873. transmit up to twenty bytes after the far-end sends a "stop transmitting" 
  874. signal.  This is because once the device driver has filled the hardware buffer, 
  875. transmission will continue until the buffer is empty.  This may cause a problem 
  876. for some far-end equipment. 
  877.  
  878. This problem can occur when any output handshaking is enabled.  This includes 
  879. CTS, DSR, and/or DCD output handshaking and transmit Xon/Xoff handshaking.  The 
  880. CTS, DSR, and DCD signals are "hardware" flow control signals and transmit 
  881. Xon/Xoff handshaking is "software" flow control signaling. 
  882.  
  883. There are two output handshaking scenarios to consider.  The first is the 
  884. "hardware" signaling case.  When the far-end's receive buffer is full (or 
  885. nearly full) it may signal to the near-end by making one or more of the 
  886. "hardware" signals inactive.  When the near-end detects an inactive signal it 
  887. should stop transmitting.  If the transmit buffer is enabled at the near-end it 
  888. may transmit up to 16 bytes before it can act on that signal to stop. 
  889.  
  890. The second case is "software" signaling.  When the far-end's receive buffer is 
  891. full (or nearly full) it may signal to the near-end by transmitting an Xoff 
  892. character.  When the near-end receives the Xoff character it should stop 
  893. transmitting.  If, at the near-end, the receive buffer is enabled, it will not 
  894. detect the request to stop transmitting until it has read the Xoff character 
  895. from the receive buffer, and if the transmit buffer is enabled it may transmit 
  896. up to sixteen bytes before it stops transmitting. 
  897.  
  898. The worst case could occur when "software" signaling is enabled.  When hardware 
  899. buffers are enabled it would be possible for an Xoff character to be received 
  900. by the hardware and not read by the device driver for up to four 
  901. character-times after the byte was received.  The worst case would be for the 
  902. Xoff character to arrive at the near-end hardware just as there are four 
  903. characters left in the transmit buffer to be transmitted.  The device would 
  904. cause a transmit interrupt just as the last or the four bytes is transmitted 
  905. and the device driver would refill the transmit buffer, then the device would 
  906. cause a receive FIFO time-out interrupt and the device driver would read, and 
  907. detect, the Xoff character, preventing further transmissions.  This case could 
  908. allow up to twenty bytes to be transmitted after the far-end transmitted the 
  909. Xoff character. 
  910.  
  911. All of these potential problems go away if the transmit buffer is disabled when 
  912. any output handshaking is enabled and the receive buffer is disabled when 
  913. transmit Xon/Xoff handshaking is enabled. 
  914.  
  915. When Automatic Protocol Override (APO) is enabled the device driver adjusts 
  916. hardware buffer functionality according to handshaking requirements.  When APO 
  917. is enabled and an application requests CTS, DSR, or DCD output handshaking the 
  918. device driver will disable the transmit buffer.  When APO is enabled and an 
  919. application requests transmit Xon/Xoff handshaking the device driver will 
  920. disable both the transmit and receive buffers. 
  921.  
  922. There is one other adjustment Automatic Protocol Override can cause the device 
  923. driver to make to the hardware buffers of a device.  When DSR input sensitivity 
  924. is enabled, and APO is enabled, the receive buffer will be disabled by the 
  925. device driver. 
  926.  
  927. DSR input sensitivity is designed to handle devices that may transmit garbage 
  928. whenever DSR is in the inactive state.  In this case it would be necessary to 
  929. ignore any bytes received while DSR is inactive.  It may be possible for the 
  930. far-end to transmit a character at the same time it activates DSR.  This could 
  931. cause the near-end to miss a valid byte if its receive buffer is enabled. 
  932.  
  933. What does all this mean to you?  Probably nothing.  There are not many 
  934. "far-end" devices around these days that do not have some level of buffering 
  935. capability.  We recommend that you leave APO off, and FIFOs enabled, unless, 
  936. and until, you determine that you are communicating with some archaic equipment 
  937. that requires it. 
  938.  
  939.  
  940. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  941.  
  942. IBM, OS/2, PS/2, Micro Channel, and AT are all trade marks of International 
  943. Business Machines, Incorporated. 
  944.  
  945.  
  946. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  947.  
  948. Windows is a trade mark of Microsoft Corporation. 
  949.  
  950.  
  951. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  952.  
  953. Micro Channel Architecture 
  954.  
  955. The IBM PS/2 and compatables use a Micro Channel Architecture system bus. 
  956.  
  957. IBM and PS/2 are trade marks of International Business Machines, Incorporated. 
  958.  
  959.  
  960. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  961.  
  962. Industry Standard Architecture 
  963.  
  964. The IBM AT and compatables use an Industry Standard Architecture system bus. 
  965.  
  966. IBM and AT are trade marks of International Business Machines, Incorporated.