DOS Days

Printing in the DOS Era

Introduction

DOS was first and foremost an operating system for business users. Because it pre-dated the internet and even local networking, the transfer of information such as a document or spreadsheet from person to person was most commonly achieved by printing your work onto paper, often referred to as a hard copy, and physically sending those pieces of paper to the person.

Printers were a big deal for early PCs - if you had a PC it was highly likely you also had a printer. The IBM 5150 that kicked off the PC revolution in 1981 didn't come with either a parallel or serial port, so you would have needed to add an expansion card to connect a printer to. When the Model 5160 (PC/XT) arrived, its Monochrome Display Adapter card also provided a printer port.


Two examples of line printers: The Epson FX-80 (left) and IBM Proprinter II (right)

We won't get into the differences between parallel and serial printers in this article, aside to say that the parallel port interface used by all PCs until the introduction of USB was the Centronics parallel interface - named after the company, Centronics, who pioneered early printing in the 1970s. Due to the ubiquity of this (or the absence of anything better) at the time of DOS' arrival, it was adopted as the standard for MS-DOS.

Most printers during this time were called impact printers. They got this name because the action of imprinting the ink on to the page was performed by physically striking the paper through a ribbon that had ink on it. Two of the most common types of impact printer are the dot matrix printer which formed characters using a set of dots through a matrix of pins to create each character, and the daisywheel printer which spun a metal wheel until the correct character was under the impact head before striking the page. The technology of inkjet and laser printers came later, and both of these are considered page printers not line printers. As the names suggest, line printers print one line at a time while page printers form the entire page's image first before printing commences. I will probably cover this topic in a separate article, as it's quite large.

 

Printing Directly in DOS

When MS-DOS arrived, there was really only rudimentary support for printing. With a printer attached to your printer port you could redirect output from the screen (known as the console) to the "line print terminal" device using a command like this:

DIR > LPT1:

LPT1: would be the device name of your PC's first printer port, but you might also have LPT2: and LPT3:. The colon after the device name is important. The '>' symbol in DOS tells the command-line interpreter to redirect output from the command before it to something else. The default output device in DOS is called 'CON' (the console, i.e. the screen) so with no redirection instruction the output of a DOS command goes to the screen. The example above would run the DIR command which would output a directory listing, and then DOS would redirect whatever it returned from the default output device (CON) to the device attached to LPT1:.

At the printer end, LPT1:, it would receive each character being transmitted (actually the ASCII code for the character is sent) and the printer would put it into a small memory buffer within the printer until a full line could be printed, which it would then do if the printer was 'online'. If it's not already obvious, another generic name for a printer at the time was a line printer, since they would do their printing a line of text at a time. There was no printing 'language' used here, so without special commands, DOS was really only useful for raw text printing - more on that later.

The COPY command in DOS could also be used to send an entire text file to the printer, simply by executing something like:

COPY readme.txt LPT1:

Because DOS has no multitasking capability, it would have to wait until the command had completed. This meant sending all the output to the printer had to finish before control was returned to the DOS prompt.

From MS-DOS version 2.0 onwards, the PRINT command was provided. This was a print spooler which allowed you to send a print job to the printer and be able to continue working while the printing happened in the background. PRINT would handle the buffering of larger print jobs (using main memory) and sending them to the printer as and when the printer was ready to receive more.

The GRAPHICS command in DOS allowed you to print a repesentation of your graphical screen to the printer.

If you had PRINTER.SYS installed through your CONFIG.SYS startup file, you could switch code pages to print in different languages.

 

Printing in Applications

It took almost no time for the limitations of basic text printing to become a problem. Word processors allowed a document's author to create documents with different fonts and other typographical emphases such as bold, italics, underline and more. These required more of an understanding between the application and the printer so that the printer could interpret what was being received from the PC and print it correctly. Until a standard was created, each printer manufacturer had their own. This meant that applications needed to directly support either your specific printer model or be able to emulate one of the more common printers out there.

Early printers had a built-in ability to print in several fonts including Prestige, Roman, Serif, Script, and Courier. You would have to select the font and size to print in using buttons on the printer itself. Some printers had an expansion port into which a 'font cartridge' could be installed to extend the number of fonts it could use.

Two of the more common printers are shown at the top of this article - the Epson FX-80 and the IBM Proprinter. Epson defined their own set of what were known as "control codes" and IBM had a different set of control codes. These codes would be sent to the printer but not be printed directly - they existed solely to tell the printer something like "until you see this other control code, print everything from here onwards in bold.". These control codes became more and more advanced as time moved on, with the ability to tell the printer to position the print head at a specific point horizontally on the current line, to adjust line spacing, set the page size/length, change the dot size (in the case of dot matrix printers), set the font type and size, set justification, reverse the paper feed, select a specific paper type and size (e.g. A4 or Legal), and much more. Epson's set of control codes were known as ESC/P, since they all began with the ASCII Escape character. IBM's was called PPDS (Personal Printer Data Stream). Epson enhanced their ESC/P to ESC/P 2 in 1991, bringing scalable fonts to Dot Matrix printers for the first time. This meant you were no longer limited to specific type sizes provided by your application software. It was initially launched with the Epson LQ-570, LQ-870, LQ-1170 and ActionPrinter AP-5000 models.

An application such as WordPerfect would come with a set of printer 'drivers' for a variety of different printer models, including the two I mentioned above. You would install whatever printer drivers you needed at the same time as installing the application onto your PC, and then you were up and running. If you replaced your printer at any point you might need to install a different printer driver in order for it to work (much like you would need to do today in a modern version of Windows), or run in one of the aforementioned emulation modes (Epson or IBM). By the time WordPerfect 5.1 arrived in late 1989 it supported over 450 different printers!


The "Additional Printers" option in WordPerfect 5.1

 

PCL and Postscript

With the advent of both the laser printer and inkjet printer in 1984 from Hewlett-Packard, PCL was born. Printer Command Language (PCL) worked in much the same way as Epson and IBM's, by sending control codes to the printer. Both lasers and inkjets however, are page printers not line printers. A page printer prints an entire page at a time instead of one line at a time - the key benefit is that they are much better-suited for printing graphics. There were at least 13 different versions (called 'levels') of PCL from 1984 through to 1995, each one expanding on earlier ones with more capability to support the latest enhancements in both printing hardware and software.

PostScript, commonly abbreviated to PS, was different to PCL. Created by Adobe Systems in 1984, PostScript was a complete programming language in its own right. It was more commonly seen on Apple Macintosh computers and the Apple LaserWriter printer. Much like PCL, PS went through several "levels" over time, with PS Level 2 being introduced in 1991 and PS Level 3 in 1997.

 

Old Printer Terminology Explained

For anyone born after the 1980s, printing terminology might sometimes seem rather confusing. Here's a short list of the most common abbreviations you may come across and what they mean:

  • Line feed - a button on most line printers that would turn the printer's friction feed drum or tractor feed one line forward, causing the paper to move up a single text line in height.
  • Form feed - a button on most line printers that would feed the "form" (the piece of paper) up a whole page - useful to quickly eject the current sheet or if using continuous paper [see fan fold below] move to the top of the next full clean sheet.
  • Friction feed - a mechanism in old printers that controlled the movement of the paper through the printer. It held the paper tightly between two drums (hence the term 'friction'), and when going to print a new line it would roll the drums up to push the paper a single line's height up.
  • Tractor feed - a mechanism in old printers that controlled the movement of the paper through the printer. Using special paper (usually continuous) with tear-off strips on each side that had little holes all the way up. Printers typically came with a tractor feed accessory that would need to be installed in order to use tractor-fed paper. A rotating sprocket on each side of the accessory with lots of small protruding 'fingers' would go neatly into the holes on each side of tractor feed paper and when a line feed occurred the two sprockets would rotate causing the paper to go up a single line.
  • Fan fold paper - a type of continuous paper with pages connected together on the short side in 'fan fold' fashion where the bottom of sheet 1 was connected to the top of sheet 2, which was connected to the bottom of sheet 3, and so on. Usually this paper was designed for tractor feed so it had the perforated edges you could tear off.
  • Draft - a mode you can set on the printer if you just wanted to print in the lowest quality, so as not to use as much ink.
  • NLQ - Near Letter Quality. The quality of early printers wasn't great, with a printer's capability to support NLQ signifying that it could produce 'near-letter quality', suitable for business letters. This would typically instruct the printer to print the same line twice, thus causing a more black output on the paper but at the expense of printing time and more ink used. It was better than Draft but not as good as Letter Quality.
  • LQ - Letter Quality. Better than Draft or NLQ, letter quality was found on slightly more expensive printers and could produce output that matched high-quality electric typewriters.
  • Ink cartridge - a consumable cartridge that you installed into the printer. On impact printers like a dot matrix or daisywheel printer, these were a usually a black plastic casing that contained a printer ribbon with the ink on it. The ribbon itself would be turned slightly through each printing action to cause an even wear/usage of the ink on the cartridge evenly. Printer ribbons might last for 300 pages or more before needing to be replaced, whereby the whole cartridge (plastic included) would be replaced with a brand new one. In the early 2000s reconditioning became available where you could try your luck at re-applying ink onto an old cartridge's ribbon to make it useful again - mixed results, but not impossible.
  • Courier / Roman / Sans Serif / Prestige / Script - the font (also known as a 'typeface') that the printer would use, changing the printed text output to the chosen font even if standard raw text was chosen to be printed without any control codes that would alter the font type. Often, dot matrix printers would come with built-in fonts for this purpose, selectable using buttons on the top or front of the printer. Early laser printers even had font cartridges you could install in an expansion slot to expand the fonts available. Daisywheel printers had no concept of fonts - the wheel itself contained the imprints of each character for a single font, so to change to a different font you would have to switch out the wheel for another one with the font you wanted to print in.
  • CPS - 'Characters per second' - the speed at which a printer could print text. Usually a printer would have several speeds indicated in its brochure or advertisement, showing how many characters per second it could print when in Draft, NLQ and LQ mode.
  • 9-pin / 24-pin - On dot matrix printers, this was the number of pins used to make up the shape of a character to print. The more pins, the higher the 'resolution' the character was printed, so a 24-pin dot matrix printer's output is much better than a 9-pin printer, closer to what you might get from a traditional typewriter. Daisywheel printers had no pins as the character imprint was already present on a wheel - daisywheel printers produced very high-quality printed text for this reason, but lacked any ability to print graphics.
  • Online - a button on the printer to make the printer 'active' (ready to print). If the printer was powered-up but 'offline', sending something to the printer would simply store the data in the printer's buffer but not print until you pressed the 'Online' button. If anything was waiting in the buffer when you pressed 'Online' the printer would immediately start printing.
  • Pitch (also known as 'point') - the size of font to print in. 10 pitch would produce fairly small text output, 12 pitch was pretty standard for a letter.
  • Ribbon - a continous black ribbon laced in ink, usually contained within a cartridge. Impact printers such as dot matrix and daisywheel put ink onto paper by striking a hammer through the ribbon with the impression of a text character. A ribbon had enough ink to last from several weeks to several months depending on how much printing you did. As the ink was used up, the printed output would become more grey until eventually no ink would be available, and the cartridge would be replaced with a new one. Cartridges were made by the printer manufacturers themselves and were designed to fit into each specific model, though quite often the physical size of cartridge was designed to work across a family of similar printers by that manufacturer.
  • TOF - Top of Form - like form feed, except a form feed couldn't detect when the start of the next page might start, so it would move forward an entire page's worth. TOF was better in that it could detect the top of the next page and stop the feed at that point.

Further Review

I have a couple of dot matrix printers in my collection, including a Citizen 120e with two unused ribbons, and a Star LC-200 with all the accessories and a ream of fan fold paper. Both are only 9-pin so the output quality isn't great. The Citizen can print at up 270 cps in draft mode or 54 cps in LQ mode. The Star is the baby brother of the better LC24-200, and canm print at up to 220 cps in draft or 37.5 cps in NLQ mode. Both support emulation of the Epson FX-850 and IBM Proprinter III.

If anyone is interested in seeing these printers in action, let me know via the Contact Us link below. The ribbons may need to be replaced (or replacement ink added) but the last time I checked they were both in good working order.

 

Old Printer Adverts


OkiData from left: 1984, 1984, Nov 1987, and Feb 1988


OkiData from left: Aug 1989, Oct 1989, and Jun 1992 (2-page spread)


Citizen from left: Apr 1987, Nov 1987, and Sep 1990


Canon from left: Apr 1985, Feb 1988, and Aug 1989


Canon from left: Oct 1989 (double-page spread) and Jun 1992


NEC from left: Aug 1982, Jan 1983, 1984, and Sep 1990


NEC from left: Jun 1992


Epson from left: 1984