How Windows 3.11 Connected to External Modems

In Microsoft Windows 3.11, connecting an external modem for dial-up access required a direct coordination between physical RS-232 serial interfaces, motherboard UART chips, and software-based AT command sets. Because Windows 3.11 operated as a 16-bit graphical operating environment running on top of MS-DOS, it did not possess modern plug-and-play networking. Instead, it treated the external modem as a raw serial peripheral assigned to a designated communications port, requiring manual hardware configuration, driver setup, and specialized dialer software to establish Internet and BBS connectivity.

The Physical and Hardware Interface

External modems communicated with the computer via a serial cable using either a 9-pin (DB-9) or 25-pin (DB-25) RS-232 connector plugged into an onboard or expansion-card serial port.

At the hardware level, communication was governed by a Universal Asynchronous Receiver-Transmitter (UART) chip:

  • Older UARTs (8250 / 16450): Common on early 386 and 486 PCs, these chips lacked internal data buffers. At speeds above 9600 bps (such as 14.4 kbps or 28.8 kbps), they frequently caused data drops and buffer overruns under Windows multitasking.
  • 16550A UART: This chip introduced a 16-byte FIFO (First-In, First-Out) hardware buffer. Windows 3.11 relied heavily on the 16550A to maintain stable throughput during high-speed data transfers without saturating the CPU.

Windows 3.11 Port Configuration

Windows 3.11 managed hardware communication through its default serial driver, COMM.DRV, configured through the Control Panel:

  1. Users navigated to Control Panel > Ports.
  2. A specific COM port (typically COM1 or COM2) was selected to match the physical port.
  3. Users configured default communication settings:
    • Baud Rate: Matched to the maximum port speed (often set higher than the modem speed to allow for V.42bis hardware compression, e.g., 19200, 38400, or 57600 bps).
    • Data Bits: Set to 8.
    • Parity: Set to None.
    • Stop Bits: Set to 1.
    • Flow Control: Set to Hardware (RTS/CTS), which used physical signal pins in the RS-232 cable rather than software flow control (XON/XOFF) to prevent dropped packets.
  4. Advanced settings required assigning the Base I/O Port Address (such as 03F8h for COM1) and the Interrupt Request line (typically IRQ 4 for COM1 or IRQ 3 for COM2).

The Hayes AT Command Set and Signaling

Because Windows 3.11 did not automatically identify connected peripherals, software had to interact with the modem using standard Hayes "AT" (Attention) commands. When a program opened the assigned COM port, it sent plain-text ASCII strings to control the hardware:

  • ATZ: Resets the modem to its stored default profile.
  • AT&F: Restores factory default settings.
  • ATDT [phone number]: Instructs the modem to dial using touch-tone signals (ATDP was used for pulse dialing).
  • ATH0: Commands the modem to hang up the line.

The modem reported its hardware state back to the operating system using carrier detect (CD), data terminal ready (DTR), and data set ready (DSR) voltage pins, along with textual return codes such as CONNECT 14400 or NO CARRIER.

Dial-Up Software Stacks

Windows 3.11 lacked a native dial-up TCP/IP stack in its base retail release. Depending on the task, users employed different software layers to drive the modem:

  • Terminal Applet: Included with Windows 3.11, this utility allowed users to directly send AT commands to the modem, manually dial into Bulletin Board Systems (BBS), and transfer files via protocols like XMODEM, YMODEM, or Kermit.
  • Trumpet Winsock: The most prevalent third-party solution for true dial-up Internet access. Trumpet Winsock provided a SLIP (Serial Line Internet Protocol) and PPP (Point-to-Point Protocol) dialer, combined with a WINSOCK.DLL implementation. It executed an automated login script containing the modem's AT initialization strings, dialed the Internet Service Provider (ISP), negotiated authentication (PAP/CHAP), and bound the IP address to the virtual socket layer.
  • Microsoft TCP/IP-32 for Windows for Workgroups 3.11: An official add-on that introduced a 32-bit network stack and Remote Access Service (RAS). RAS enabled users to dial into corporate networks or ISPs directly using an integrated configuration interface that stored phone numbers, modem initialization strings, and port speeds.