From: David Ruggiero <osiris@halcyon.com>
Subject: Re: 16550AFN support and why Windows doesn't
Originator: osiris@halcyon.com
Reply-To: osiris@halcyon.halcyon.com (David Ruggiero)
Organization: [none - why fight entropy?]
Date: Mon, 28 Sep 1992 21:46:29 GMT

tony.waddell@eabbs.uucp (Tony Waddell)  writes:

>3)  Microsoft seems to imply that you can't have it both ways.  Does
>anyone know just what the stumbling block is in regards to DOS-based
>comm programs vs. Windows-based comm programs making use of the FIFO
>buffer?  Shouldn't it simply be a function of a device driver?  If the
>16550 is present, why can't the buffer simply be turned on and used by
>ANY application?

The problem is that Microsoft badly munged the UART driver code. I spoke to
someone once who had seen the source listings (which used to be included
in the Developer DDK sent by Microsoft). He said the code looked like it was 
written by a summer intern and included comments like 'I don't know why I
need to do this [particular instruction], but it only works if I do'.

The two main effects of this are that (1) the Windows device driver uses
the FIFO badly (the interrupt trigger level is set at an absurd value, for
example) and (2) the driver presents only one character at a time to a DOS
based application (in other words, it simulates only a virtual 8250, not a
virtual 16550AFN). This leads to extremely poor throughput, even for higher-
speed systems, and the poor communications performance for DOS apps under
Windows in general.

I went around and around with Microsoft Product Support on this problem 
about three months back, and got nowhere. I either got hopeless techdroids
who couldn't even begin to understand the issues ("I'm sorry, sir; I have
nothing like that listed in my Knowledge Base"), or slicker marketroids
who refused to admit/believe that anything could *possibly* be wrong with
Windows ("We do that here all the time with no problems...").

The *only* solution to the problems is to get real communications drivers
for Windows; someone in Microsoft who wanted probably wanted desperately
to get rid of me (and who shall remain nameless!) sent the info, which I
pass along below without change or edit:

-----included file--------
 
Turbocomm is a set of replacement communications drivers for Microsoft 
Windows 3.x which adds support for 16550 style UARTs. 16550 is the 
standard UART in IBM Microchannel machines (Model 50 and up) and is pin 
and software compatible with the older style 16450 and 8250 UARTs.  The 
16550 UART is also used in many high-speed (9600 baud) internal modems 
including those from Everex, U.S. Robotics, UDS Motorola, ZOOM, and 
others. The 16550's FIFOs are supported for both Windows and DOS 
applications operating under Windows.

Turbocom, with the 16550 UART, provides very substantial improvements in
through put and reduction in character overrun errors.  It also fixes 
several Windows comm driver problems, including the "high-speed 
full-duplex port lock-up" bug, the "shared IRQ port lock-up" bug, and 
makes access to Com 3 and 4 as easy as Com1 and 2.  The TurboCom drivers 
support up to 57.6 kBaud for comm ports in which the 16550 UART is 
installed, and is available from:

Bio-Engineering Research Laboratories 2831 Seventh St. Berkeley, CA 
94710 Voice: (510) 540-8080 - FAX: (510) 548-0513 - BBS: (510) 644-9436

======end included file==============================================

I have heard nothing but good about the Turbocomm drivers, though I haven't
had a chance to try them myself. I think the retail price is around $50-60
for the set. (No, no affiliation of any sort 'tween me and them.)

Best of luck...David

-- 
David Ruggiero  (osiris@halcyon.com)      Seattle, WA