Windows 3.11 Serial Port Settings Management
Microsoft Windows 3.11 managed serial port communication settings
through a combination of the graphical Control Panel interface, direct
hardware resource definitions, and low-level configuration directives
saved in the SYSTEM.INI file. Because the operating system
operated largely as an environment on top of MS-DOS without modern Plug
and Play capabilities, serial communication relied on manually balancing
base input/output (I/O) memory addresses and interrupt request (IRQ)
lines, while using internal communication drivers to handle hardware
UART (Universal Asynchronous Receiver-Transmitter) chips.
The Graphical Control Panel Interface
End users primarily managed serial communications through the "Ports" applet located in the Windows Control Panel. This interface allowed configuration for standard ports (COM1 through COM4).
Users could configure basic transmission parameters per port, including:
- Baud Rate: Transmission speeds typically ranging from 110 bps up to 19,200 bps (and occasionally higher depending on hardware).
- Data Bits: Standard settings of 5, 6, 7, or 8 bits.
- Parity: Even, Odd, None, Mark, or Space.
- Stop Bits: 1, 1.5, or 2.
- Flow Control: Hardware (RTS/CTS), Software (XON/XOFF), or None.
By clicking the "Advanced" button, users could specify the hardware configuration, notably changing the port's Base I/O Port Address and the assigned Interrupt Request (IRQ) line.
Hardware Resource Allocations and IRQ Sharing
By default, the IBM PC architecture assigned standard base memory addresses and IRQ lines to serial ports:
- COM1: Address
03F8h, IRQ 4 - COM2: Address
02F8h, IRQ 3 - COM3: Address
03E8h, IRQ 4 - COM4: Address
02E8h, IRQ 3
Because the Industry Standard Architecture (ISA) bus did not reliably support IRQ sharing among serial devices, conflicts frequently occurred. If a user attempted to operate a serial mouse on COM1 and a modem on COM3 simultaneously, both devices would compete for IRQ 4, causing system instability or communication failures. Windows 3.11 required users to resolve these conflicts manually by assigning non-conflicting IRQs (such as IRQ 2, 5, or 7) via the Advanced settings dialog and jumpers on the expansion cards.
Configuration via
SYSTEM.INI
The visual settings from the Control Panel were directly written to
the core Windows configuration file, SYSTEM.INI.
Administrators and advanced users frequently edited this file directly
using a text editor to fine-tune serial performance.
In the [boot] section, the system loaded the default
communications driver:
comm.drv=comm.drvDetailed hardware behavior was configured under the
[386Enh] section for 386 Enhanced Mode operation:
COMxBase: Set the hexadecimal base memory address (e.g.,COM3Base=03E8).COMxIrq: Defined the specific IRQ used by the port (e.g.,COM3Irq=5).COMxAutoAssign: Determined how Windows resolved contention when multiple applications requested access to the same port.COMxBuffer: Adjusted the size of the operating system buffer (in bytes) to prevent data loss during incoming transmission.COMxProtocol: Used to set software flow control behavior when opening the port.
Driver and UART Limitations
Windows 3.11 relied heavily on the standard COMM.DRV
driver to interact with the system's serial UART hardware. At the time,
computers were transitioning from older 8250/16450 UART chips to the
advanced 16550AFN UART, which featured a 16-byte FIFO (First In, First
Out) hardware buffer.
The default COMM.DRV included with Windows 3.11 provided
limited, often buggy support for 16550 FIFO buffers. At speeds above
9600 or 14,400 baud, buffer overruns were frequent because the driver
failed to service interrupts before the hardware buffer filled up. To
achieve reliable high-speed serial transfers for 28.8k or 33.6k modems,
users commonly replaced the native driver with third-party alternatives
(such as CYBERCOM.DRV or patched versions of
COMM.DRV) that properly enabled and tuned the 16550 UART
hardware buffers.