Windows 3.11 Dot-Matrix Multi-Page Printing
Microsoft Windows 3.11 supported multi-page printing on dot-matrix printers through a unified architecture combining the Graphics Device Interface (GDI), dedicated printer drivers, and page-advancing control commands. By abstracting the hardware layer, Windows enabled applications to compose multi-page documents without needing to communicate directly with hardware, relying instead on driver-level paper-size definitions and form-feed signals to manage continuous tractor-feed paper.
The Role of GDI and Page Delimitation
Under Windows 3.11, applications did not output raw text directly to
the printer port. Instead, an application drew text and graphics using
GDI API functions. For multi-page jobs, the application called the
StartPage() and EndPage() functions (or the
legacy NEWFRAME escape call) to signal page transitions.
When an EndPage() signal was triggered, the GDI packaged
the rendered page data and handed it to the print spooler, ensuring that
page breaks occurred at the correct logical intervals regardless of the
application being used.
Memory Management Through Banding
Dot-matrix printers typically had very little onboard RAM, often lacking the memory required to hold a full-page graphical bitmap. To resolve this limitation, Windows 3.11 drivers used a technique called banding. The GDI divided each physical page into multiple horizontal slices, or bands. Windows rendered one band at a time in system memory, sent the corresponding raster or text data to the printer head, advanced the platen, and repeated the process until the page was fully rendered.
Printer Drivers and Escape Codes
Dot-matrix hardware ran on distinct command sets, predominantly Epson
ESC/P or IBM Proprinter emulation. Windows 3.11 included native drivers
such as EPSON9.DRV (for 9-pin printers) and
EPSON24.DRV (for 24-pin printers).
When a multi-page document transitioned from one page to the next,
the driver translated the GDI’s page-end call into a hardware command.
In most cases, this was an ASCII Form Feed character (decimal 12, or
0x0C). The printer firmware interpreted this control code
by feeding the continuous paper forward until the paper-out sensor or
line-counter aligned with the next Top of Form (TOF) position.
Continuous Fanfold Paper and Alignment
Most dot-matrix setups utilized continuous fanfold paper fed by tractors rather than single cut sheets. Windows 3.11 handled this through explicit paper dimension settings in the printer driver configuration interface (accessible via Control Panel or Print Manager). Users configured page heights (such as 11-inch Letter, 12-inch, or custom heights) to match the physical perforations of the paper.
By tracking the vertical line increments and issuing the Form Feed code at the end of each logical page, Windows 3.11 ensured that the print head skipped cleanly over paper perforations, preventing vertical drift and keeping text aligned consistently across dozens of continuous pages.
Print Manager and Port Handling
The Windows 3.11 Print Manager (SPOOLER.EXE) acted as
the final intermediary, intercepting the print stream and spooling it to
temporary files (.SPL) on the hard drive. It then fed the
data in the background to the designated parallel (LPT) or serial (COM)
port. This background spooling prevented printer delays from locking up
the 16-bit operating environment and ensured that multi-page data
streams reached the dot-matrix printer sequentially without interrupted
line feeds or premature page cuts.