[comp.sys.ibm.pc.hardware] Tis a puzzlement

andyross@ddsw1.MCS.COM (Andrew Rossmann) (08/10/90)

  I have a rather interesting problem. I noticed that when I ran my
INFOPLUS program, that COM1 (which is a Practical Peripherals 2400 baud
internal modem) had a baud rate of 2! I tried changing it to something else
with the MODE command, but it wouldn't budge. I'd been (and still am) using
it with no problems, until I tried running DSZ. It complained that the port
was defective. What is really strange is that this happened when I was
running it 'plain.' I've generally been running under Windows 3, and it
works fine then!! (Under 386 enhanced mode.)
  I tried pulling various cards, but nothing changed. I then put the modem
in my old computer (Tandy 1000SX), and there were no problems. I tried it
in a Tandy 3000NL, and it worked fine there, too (at both 8MHz and 10MHz
bus speeds.)
  My computer is a Gateway 2000 386/25 w/ cache (Micronics) and the bus is
set to 8.33MHz. If I slow the computer down, the baud rate is 'stuck' at
452 baud.
  Has anyone seen something like this before? And why does it work fine
under Windows 3 enhanced mode?
  The UART on the modem card is a surface mounted 8250. 

  Andrew Rossmann
  andyross@ddsw1.MCS.COM

dgil@pa.reuter.COM (Dave Gillett) (08/14/90)

In <1990Aug10.002428.16237@ddsw1.MCS.COM> andyross@ddsw1.MCS.COM (Andrew Rossmann) writes:
>  I noticed that when I ran my
>INFOPLUS program, that COM1 (which is a Practical Peripherals 2400 baud
>internal modem) had a baud rate of 2! 
>  If I slow the computer down, the baud rate is 'stuck' at
>452 baud.

I don't know for sure how InfoPlus is deriving  these rates, but I'd hazard a
guess that it's toggling the DLAB (Divisor Latch Access Bit) in the UART and
reading the divisor from the registers.  Unfortunately, on machines with 80386
processors it is possible for the read--or half of the read--to occur before the
write that toggles DLAB takes effect, unless the code forces a flush of the 
processor's look-ahead buffer.  I suspect that InfoPlus may be using code that
was written before the 80386 appeared, and so may not handle this correctly.

It's not clear from the original post whether the modem actually fails to
operate, or whether the problem is limited to the anomalous baud rate display. 
If the latter, then I wouldn't worry about it, but if the former then there
may be a similar problem with the character I/O routines.  In that case, a
version fixed to work with 386 processors ought to be available by now....
                                          Dave