Basic Page Formatting

Page Formatting for Dot-Matrix and Inkjet Printers

Dot matrix printers were amongst the first to be capable of anything other than a fixed font from a metal typeface. In principle a dot matrix printer could print any kind of text or graphic. This flexibility raised questions about page formatting and helped develop the idea of computer desktop publishing and word-processing.

Dot matrix printers were first introduced in 1970 by both Digital Equipment Corporation and by Centronics using a mechanism made by Brother.   By the mid 1970s the idea was beginning to take off, driven by the new industry of personal computing. Anadex made low cost dot-matrix printers in the late 1970s. Teletype made the rather neat KSR-43 printing terminal around 1979. Epson's TX series first sold in 1978 and MX series printers became the definitive home and small office printer in the mid 1980s. There were a long list of others; Apple (using a mechanism from C.Itoh), Brother, Citizen, Facit, Genicom, Newbury Data, OKI, Olivetti, Panasonic, Philips, Printronix, Seiko, Star and Tally.


Early Printers

Before the advent of dot matrix printers in 1970 computers didn't have much issue with print formats.   There was one font provided in pre-cast metal by the bandprinter or modified typewriter concerned. There were three main kinds of printer:

  • Modified typewriters like the UNIVAC UNIPRINTER, Friden Flexowriter and versions of the IBM Selectric. These were used where low cost or high quality was needed, with the problem being that print speeds were just 10 characters per second.
  • Teleprinters like those made by Teletype which printed in upper case only at similar speeds. Teleprinters could work remotely over telegraph and phone lines.
  • Drum and band printers which used a rotating typeface and around 130 print hammers to create characters on the page. These could be fast, with 1,000 lines per minute a typical speed. This kind of printer was expensive, the print was usually quite poor and often upper-case only.

Non of these printers offered much by way of formatting. There was one font, although the IBM Selectric Golf Ball could be changed by an operator. Print pitch was normally 10 characters per inch but 12cpi might be selectable. Some typewriters could be specially made to support proportional spacing. Underscore was possible by backspacing and overtyping and bold might work the same way. Never mind fonts, graphics and colour a lot of printers didn't even have lower case. There were exceptions, Calcomp made one of the first pen plotters in 1959, but they weren't common. Plotters were too slow for text page layout.

So far as formatting went, the ASCII code devised for teleprinters in 1963 had most of what a printer could do. This was basically moving the paper using vertical tab or form feed or the printhead using space, horizontal tab, backspace and carriage return.

Formats, Word-Processing and Computer Typesetting

There was growing interest in composing, laying out and typesetting documents using computers by 1970. These jobs could be very time consuming, so fast typists earned something of a premium, as did compositors. IBM produced special "Selectric Composer" typewriters with proportional spacing and swappable golf-ball heads to do this sort of task. A rather unusual and flexible typewriter called the Varityper was another way to do the job .

There were precendents for mail-merge and composing documents from standard paragraphs. Friden Flexowriters had provided this kind of service using paper tape as a recording medium; they were used to produce personalised relies to letters to US Congressmen for instance. IBM's Selectric/MT did a similar job using magnetic tape and it could also be used to prepare data for mainframe entry. IBM coined the term word processing in 1968.

Interest in computer typesetting was growing. AT&T Bell Labs developed both UNIX and troff to provide computer controlled typesetting for their patents division from 1971. Computer controlled typesetting began a big change in the print industry from the mid 1970s on.

The first laser printers were built by Gary Starkweather at Xerox in 1969 and 1970 based on modified copiers. Modifying the copier was relatively straight-forward, the problem was that it needed a fast and expensive mini-computer to generate the page-image. Butler Lampson and Ronald Rider developed the formatter. The Xerox PARC Alto Systems and the EARS laser printer are widely regarded as ancestors of all today's systems.


Computer Power & Printers

A lot of printers sit next to a computer and it might seem that the printer motors, clutches and solenoids would be under the direct control of the nearby computer. The screen is completely controlled by the computer - why should the printer be different?.

Printers were often sold as largely mechanical modules, for instance the Shinshu Seiki EP-101 was widely used in desktop calculators.

Early computer printers were often like this, with a substantial part of the printer control logic being inside the computer chassis and a big control cable carrying a group of data signals together with a miscellany of control signals.

This approach was widespread; the Apple Silentype introduced in 1979 had most of it's control logic on an adapter in the Apple II computer. This was a typical Apple product of the time, the printer had minimal electronics, all the intelligence was in the nearby computer.

In complete contrast the original Apple LaserWriter of 1985 had a 12MHz Motorola 68000 and 1.5 megabyte of memory at a time when the typical Apple Mac had an 8 MHz processor and 256 kilobyte memory. To make communication efficient the LaserWriter used a new graphical developed by Adobe called PostScript. The fast processor, big memory and graphical language made the LaserWriter expensive, at $6,995 it cost a lot more then the computers. If you wanted professional graphics in the late 1980s it was the tool of choice.

Why did Apple (and others) move from concentrating the electronics in the computer to putting the biggest processor in the printer?   Looking at some details of how a dot-matrix printer works might help answer that and explain why there is so much variation in printer design and why print languages have been so important.

Printers became independent peripherals as standards developed. The ASCII code for characters, RS232, Dataproducts and Centronics Interfaces and prototype languages like Epson Esc/P and HP PCL developed. Dot matrix printers dominated the early stages of this, because they were by far the most common at the time. In terms of their behaviour inkjets are just faster dot-matrix machines.   Laser printers do behave rather differently, that PostScript language for instance.


Dot Matrix Idea

Dot matrix printers are a niche product these days, used to produce print cheaply and reliably in logistics centers and process control. Inkjets have taken over from dot matrix printers. However in terms of the process described here an inkjet printer isn't very different, they work in much the same way. Some early inkjet printers were very clearly based on a dot-matrix chassis, designs have diverged more in the last ten years. Dot matrix, inkjet, thermal and laser printers are based on printing dots.   What looks like a solid image is made of a great many picture elements which print as dots. Much of what is said here applies to all four kinds of printer.

Dot matrix printers use a relatively simple and quite visible mechanism to print. Print-pins held in a printhead hit an inked ribbon against the paper and a dot of ink transfers. Arrange a little column of pins one above another and they can spell out letters and numbers and draw patterns. To do this the printer needs two motors:

  • one drives the paper through the printer, it is called the paper feed or sometimes the vertical motor.
  • The carriage motor scans the printhead back and forth across the paper. The print-head rides in a carriage, usually driven via a belt looped around the carriage motor at one side and a tension-wheel at the other.

A printer could work with one pin but that has rarely (if ever) been done.   To get an upper-case E needs at least five rows of dots; at the right hand side of the character three rows contain the horizontal bars and two rows are idle. With seven rows of dots it is possible to get a well-formed upper case alphabet.

With one pin, one pass of the carriage can print a single line and that would be slow. It would also be important to ensure that each pass of the carriage had exactly the same positioning, that is difficult to do and an issue we'll come back to. Nine pins is the minimum needed to produce a well-formed outline of any character in the "Latin" character set used in the US, UK and Europe in one pass. More pins would be better, particularly for graphics and the Chinese, Japanese and Korean (CJK) character set.

The nine pins and the electromagnetic coils driving them forward are usually arranged in a module called the printhead; this is just a compact assembly of the parts needed to hit the ink-ribbon and the paper. Inkjet printers work in a very similar manner but the first inkjet printers from both HP and Canon had 12 nozzles, giving them a slight quality advantage over dot-matrix technology.

Dot-Matrix In Action

The carriage and linefeed motors could be stepper motors directly under computer control, on the lines of what was said about the Apple Silentwriter. In principle it would be possible to advance one print position, stop, fire the pins, step again and so forth. Advancing and halting would be dreadfully slow. Even if the advances were at 100th second intervals there are 1320 print positions (at 10 characters per inch and up to 10 dots per character so that would take something like 13 seconds for a line. (And we probably can't step a printhead, belt and motor that quickly without using quite a lot of power to accelerate then decelerate.) To get a reasonable print speed we need to accelerate the printhead so that it makes on pass across the page in about a second. Printers are a set of workable compromises.

Once the first column of dots is printed the page is marked and the motor is still turning. There is now a commitment to printing 1319 more columns (for a 132 character line at 100 dpi ) over the next second, so the computer will have 700 microseconds to have each new dot pattern ready. The dot patterns have to be looked up in the computer's memory. The few lines of machine-code software to do this aren't much effort, even for the rather limited 6502 processor in an Apple II computer, but that kind of computer couldn't multitask, so printing a page might mean it could no longer respond to the user. Printing would be no effort at all for the 2Ghz or faster device in a PC, and they can multitask, but it must be got right time and time again through the 700,000 or more dots that might make up a page of print or the look of that page will be wrecked.

There is no room for delay whilst the computer user opens a video file or has a softphone conversation. Any one processor can only make an absolute commitment to doing one thing in real time.

Memory Buffer

There is a way to guarantee that the information is there when it is needed, store it in advance in a memory dedicated to the printer.   The memory needs to be big enough to handle the data for one pass of the carriage.   If the printer handles graphics and is capable of 250 dots per inch then its (250*13.2*9/8 =) 3,712 bytes that need storing or just under 4 kilobytes. Even in the early 1970s when dot matrix printers became common that sort of memory was affordable. A pair of print buffers and a few working variables such as a flag to say line complete might be held in a standard sized 8 kilobyte static RAM chip.

The memory also needs some support circuits. A counter to take the data from the computer and write it into successive 9-bit memory positions matching what the printhead will do is needed.

A counter also monitors the progress of the printhead and reads successive positions. We could use the same counter but then the computer would fill the memory and be locked out whilst the printhead dealt with the line. Two counters working alternately with two memories would be better, now the computer can write data for the next line when it gets a chance whilst the printer deals with the previous line.

Memory frees the computer from the tie of the real time task. If it gets a sudden burst of user -driven activity it can just ignore the printers needs. The printhead will get to the end of a line; no flag is set to say a new line of data has been written so the motor just stops and waits.

To this point the suggestion has been that the computer creates the dot patterns sent to the printer.   One of the merits of dot matrix printers is that they can produce graphics, so it does make sense to have the computer able to do this. Some of the low cost inkjet printers today work very like this. Printers using HP's LIDIL protocol for instance expect the computer to do almost everything, they can't even print text unless the computer formats it for them.

Text

A lot of what most printers handle is text.   With a 9 pin printhead the font range is limited, so the job of forming characters isn't complicated. It might be done in the computer but can quite easily be done in the printer.

Character ROM

What the printer needs is a character shape memory. Lets suppose for simplicity that we form the characters on a 9 x 8 grid leaving the 8th column for space after each character. Characters themselves are a grid 9 tall and 7 wide. There are 94 common printable characters not including the space so the printer needs (9*7*94=) 5922 bits of memory to store a dot pattern for each. Storing one set of characters as a bitmap can take less than a kilobyte of memory. (In practice character generator ROMS might have 6 bits to select the character and 3 bits to select the column within the character.)

Instead of passing a prepared graphical image to the printer memory the computer just passes the line of text as a line of character codes in some common code like ASCII. Lets suppose it passes the sequence ABCDEFGHIJ etc (a pattern often called ASCII swirl). The buffer-memory space needed is smaller than it would be for graphics; just 132 bytes for a line, instead of the 3,712 bytes that might be needed for graphics.

The printhead sets of from the left and as it is coming to the first print position the counter has been set to its lowest number 0. The printer electronics are still maintaining the carriage position counter but now it is re-interpreted. The bottom 3 bits of the counter are now the column within a character and the remaining bits are used as a character counter. The character counter is effectively the carriage position counter divided by 8 - so we are on character zero in the print buffer which is A. At the ninth carriage position the character number will be 1 (in this case B and position 17 will be 2 C and so forth (if the characters were different widths the divider would be different).

The bottom 3 bits of the carriage position are the column within the current character. In the first few positions it is 0,1,2,3 etc until position 8 where it cycles round to 0 again and once again at 16 and so forth. The character column number is the remainder from the divide by 8 operation on the main counter. In practice its just the bottom 3 bits of the carriage position counter.

The printhead is in position 0 which is character 0 column 0. Bits 3 and up of the counter are all zero and they are used to look up the character code in the 1st position of the memory buffer, which in this case was loaded as A. The data output from the memory buffer is A and this is taken to the character generator. The column is 0, which is the leading edge of a character. The output from the character generator sets pins 3,4,5,6 and 7 activated. At column 1 pin 5 and 8 fire. Column 2 pin 5 and 9 and so on through the character. At column 6 pins 3,4,5,6,7 fire again making the downstoke of the A. At column 7 nothing happens, its the gap. At column 8 the character number is 1 and looked up in the memory buffer that gives B. Column 8 prints the upright of the B, pins 3,4,5,6,7,8,9. Column 9 pins 3,5 and 9 and column 10 repeats that. On we go through the character positions in the memory buffer and letter patterns in the character ROM.   Each change in position generates another pattern for the print pins.

Some sensors are needed, for instance, to control the carriage position counter. An old trick still used in some inkjet printers is to put a clear celluloid strip with fine black stripes across the carriage width. An LED on one side shines at a sensor on the other, but the sensor goes on and off as the stripes pass. Each stripe increments the counter. With two sensors slightly offset it is possible to sense which direction the head is going in and work a binary up-down counter.

Adding the character ROM to the printer with a basic memory for the pin positions means the computer no longer has to do that task. Some of the refinements have been glossed over here. For instance most ROMs are 8 bit to match the 8 bit bus widths used in computers but the printer needs a 9-bit character ROM; there were special ROMS that provided this. There are all sorts of other ramifications like signalling to the computer when a buffer is full and activating the line feed motor at the end of a line.

The purpose here isn't to provide a text-book for printer design, just to establish that the print buffer memory with a couple of counters takes the real-time burden off the computer. Adding a character generator memory as well as the print buffer memory reduces the computers work about 7 fold. If text is to be printed the computer just provides one 8 bit character code, it no longer has to provide 7x9 bit pin configurations.

Dot matrix printing gives the flexibility to print text or graphics. If the printer has a text mode but the graphics are still wanted then some switch or command needs to be provided to choose one or the other. A common way to do this is to provide an escape code. More on that below.

Early Printers

Early dot matrix printers worked pretty much along these lines. Both Centronics and DEC produced dot-matrix devices in 1970 with 7 pins - they could only produce upper case characters. There were no microprocessors, the counters and memory were implemented using a couple of dozen small-scale integrated circuits ( the 74xx series).

As it happens microprocessors were invented in 1970 and the first commercial DRAM the Intel 1103 in the same year. within a couple of years early versions were being used in printers. The microprocessor solves some of the complexity, for instance it can keep the various counters and dividers in it's memory.

Some of these printers were a bit more sophisticated, for instance printing terminals could print one character, stop, and shuffle the head out of the way so the user could see what they had typed. It is possible for a dot matrix printer to stop and start printing in mid line if it can do relatively sophisticated things like re-positioning the printhead and the counters. Doing that sort of thing is yet another reason to use a microprocessor.

There is that problem mentioned before that if the printhead stops then print will be slow and dot-columns may not line up very well. If the typing is being done by hand the slowness won't matter much because typing speeds are likely to be of the order 30 -60 words per minute - so about one or two lines per minute. There may be things the processor can do to improve column line up as well, for instance moving the printhead back fully leftward then counting forward before printing a word. Dot-matrix machines with keyboards had some weird tricks to improve their usability.

The character generation mechanism used by early dot matrix printers is pretty much the same as that used in video display terminals and early PC cards like the Monochrome Display Adaptor (MDA). Since a cathode ray tube is a fast line scanning device the character ROM needs to know the character position, character to display and the correct line number, otherwise the mechanism is pretty similar, just working at a line frequency of 15,000 per second to give a steady looking display on a phosphor screen instead of one per second on a printer.

Printer Development

Some early printers like the Teletype KSR-33 were almost entirely mechanical. The machine had just one motor and a single solenoid to work the print mechanism, everything else was triggered by that. The mechanical cams, clutches and link-rods to do the printing job were rather wonderful but expensive. Print from these early electro-mechanical machines was limited, just one font, often upper case only. The IBM Electric Typewriters were sometimes modified to produce things like aeronautical almanacs and the Friden Flexowriter was often used as a paper-tape controlled word-processor. Pre-cast type impacting the paper evenly through a carbon ribbon can form characters evenly and sharply enough to be used as camera-ready copy for book production. None of these machines had anything like the flexibility of the dot-matrix mechanism. They did, however, tend to have nicer looking print.

The real benefit of dot-matrix print is its potential for flexibility, text and graphics mixed. That would either need detailed control of the printer by software in the user's computer, and as suggested above that seems undesirable because it burdens the computer. Alternatively the printer can have it's own computer, made economically feasible with the advent of microprocessors. For the user's computer to tell the printer what to do there needs to be a control language going beyond character codes like ASCII. At first printers were given instructions by a few escape codes, some of those developed into print languages.

Dot matrix printers use a simple mechanism in some ways. One motor feeds the paper, another pushes the print carriage back and forth and a set of pins transfer ink from the ribbon to the page.

In principle a dot matrix printer could rely on a nearby computer to provide its control information. In practice the demand for real-time data would interfere with the computers responsiveness to its user. Adding a bit of electronics to the printer, ultimately giving it it's own local microprocessor allows it to do a more interesting and useful job.

Printing processes create some problems because, like a lot of machinery, the control has to happen in real-time. There is a need for at least a basic local controller in the printer. This local control then gets elaborated.

Once a printer has a microprocessor it can do many more things. For instance in the description of how text is formed the characters were 9 pins high and 7 wide with a one dot gap between them. There could be several different fonts, which is just a matter of switching between character generator memories. More interestingly the fonts could be different sizes, ranging from a 6x4 matrix (dreadfully compact but just about readable) to a rather expansive 9x9. To do this the divider used to provide the character and column positions needs to be changed. If the counters are actually being kept by a microprocessor that is no problem.

Escape Codes

There is a problem with this, however. There is nothing in the ASCII code to specify a font.   Teleprinters didn't have fonts.   ASCII does provide an escape code and when this is encountered in the data stream it implies escaping from the ordinary data stream into a control mode. Printers typically used escape codes to specify what they would do. Epson, for instance used a print-control language called Esc/P. Likewise HP's PCL language was originally created for dot-matrix and inkjet printers.

For a while in the early 1980s almost every printer manufacturer introduced their own escape sequences. Furthermore so did video-terminal manufacturers. The terminal manufacturers sobered up after a while and cooperated to develop ECMA-48 / ANSI X3.64 escape codes

Printer Manufacturers often retained their own codes but also offered an emulation of the Epson Esc/P codes, which became the de-facto standard.

The need for control codes is looked at again below; after discussion of what the printer can do shows how it gets more and more elaborate and unlikely to be under the direct control of a nearby PC.

Software Improvements

If the printer's microprocessor is fast enough then there is no need for a separate character generator ROM, the whole job can be done in software. The printer control microprocessor might keep track of the carriage position by getting an interrupt from the carriage position opto-sensor. Some arithmetic based on the current character width and the buffer tells it what character and what the current column output should be, Suppose the user wants double height letters, that isn't a problem to the processor; use two passes of the printhead. Double width characters just double up the printing of every column. There may, of course be that problem with the dot-columns from separate passes not precisely lining up.

The head passes forward and back across the page. With typewriters and teleprinters the typing happened left to right and the carriage returned to the left margin as fast as possible. With a computer printer the carriage can print when it is returning as well, this may well get 25% better productivity from the printer. That issue of print columns not lining up appears yet again, the tension on the belt is different in each direction so the pins may not line up very well.

One way around the line-up problem is to hold a timing constant measured in each direction. The printer has a calibration test in which it prints a field-mark center page in one direction, then in the other. The two probably won't line up. The user presses arrow keys until marks from front and back stroke line up and the printer stores the resulting difference in dot position. The printer then adjusts the apparent count when printing in the reverse direction so that columns line up correctly.

Using software tricks to overcome hardware limitations is common. For instance down at a detailed level one of the reasons you can't print a column and stop is momentum in the stepper motor. Steppers can't just suddenly start moving at full speed, either; they need to be accelerated. Software timing loops can do that timing and get better performance from the printers motors, giving fast carriage and paper movement. These improvements in printer performance could be made using control software running on a nearby computer and a dumb printer chassis, or using software running on the printers own microprocessor.

In the early 1980s there were a great many computer companies, many with their own distinctive hardware design. A list might begin Aardvark, Acorn, ACT/Apricot, Adler, Amdahl, Apple, Atari, BCL, Burroughs, CDC, Commodore, Cromemco, ... Victor, Unisys, Wang - we can easily quote about 100 names. It wasn't going to be possible for printer manufacturers to provide a special hardware interface or complicated driver software for all, or even many. As the software became complicated nor could it be hoped the customers would do it.

There were also a couple of dozen printer manufacturers, some of them hoping to be computer makers - Epson's rather nice HX-20 computer found some use in banks for instance. .

The situation was still more complicated because by the 1980s the whole IT industry was increasingly led by software houses. Software as a separate industry had scarcely existed before 1969 (when IBM decided to stop giving it away with the machine). By the 1980s a complicated situation had developed, so that, for instance, one kind of pharmaceutical labelling software would only work with Facit printers because it relied on their command-set. That was if it was possible to get a physical interface to work. Throughout the 1980s DEC PDP-11 computers which had always worked with Centronics printers had difficulty with Epson printers intended for the IBM-PC which were nominally the same because of differences in the way a couple of signals behaved.

IBM mainframes didn't have such near-miss problems, basically if you bought the system you had an IBM printer. IBM had market dominance in mainframes and could cajole or strong-arm customers into doing what they wanted. The IBM PC also came with it's own printer, but that was an IBM badged Epson and the proprietary 25 pin interface was so widely copied it became an industry standard.

Print Hardware Improvements

Printer makers competed on price, performance and features. Improvements in dot-matrix hardware helped move the computer industry towards that ideal of being able to draw any shape on the page. An ever-growing list of printer features need increasingly elaborate escape-code sequences.

To get horizontal print pitches of 10 or 20 character per inch print the number of stripes on the carriage position strip can be doubled. To get 12, 15 and 17.5 cpi the microprocessor might count 20 cpi marks but use a bit of arithmetic based on the apparent acceleration of the head to guess intermediate print positions. Doubling the resolution of the encoder strip and carriage position counter is easy, however it won't help to give 20 cpi print because the dots will be cramped and overlapping. The printhead needs to give smaller dots and to do that it needs smaller pins. If it is to have smaller pins then to produce a line of characters in one stroke it also needs more of them.

An old standard established by typewriters is that lines of print occupy 1/6th of an inch of page height (about 4.2 mm or 12 point). That allows for both the characters themselves, space for the descenders on lower case and a bit of whitespace. The print itself is typically 10 point or 3.5 mm high. A 9 pin printhead has pins each fractionally less than 0.39 mm across so that the dots almost join on the page but the pins don't rub against one another in the printhead jewel. A pin 0.39 mm in diameter is making a big dot; it's the size of a thick biro. A thin biro makes a line 0.2mm across and a fine mapping pen 0.1mm. The big pin prints at 65 dots per inch - not as good as the worst newspaper picture resolution. One of the reasons to switch from using pre-cast type to dot matrix is to get some graphical ability; that need isn't met if the result looks like bad newsprint.

The obvious thing to do is to shrink the pins and have more of them, so that is precisely what printer manufacturers did, producing 18 and 24 pin printheads. The pin diameters might not halve in an 18 pin head because the designer might decide to add a little to the print height so that it occupies the 4.2 mm space on the page entirely, allowing things like superscripts, subscripts and overscores. 24 pin heads are even better and there is enough definition in a character to allow single - pass printing of the Chinese, Japanese and Korean characters with their more complicated form. The pins are now something like 0.175 mm across, however, so they are more vulnerable to wear and damage. To avoid the problems manufacturers often made the pins a bit bigger and put them in two columns, one offset a dot position above the other. The printer compensates for the distance between pin columns by adjustments to their timing. Print resolution is nearly 150 dots per inch, better than newsprint.

Manufacturers often described the output of 24-pin dot-matrix printers as Near Letter Quality or NLQ, so they admitted it still wasn't quite as good as print from the best typebar and daisywheel typewriters.

An obvious next step is to shrink the pins further, which manufacturers did. This didn't work well in practice. A wire's bendability increases exponentially as its diameter shrinks (thin strands are used in bendy flexes) so thin print pins are very vulnerable to getting bent. Packing more drive-coils into a small printhead also gets difficult so whilst there was at least one printer with a 48 pin printhead in the early 1990s they weren't popular for long.   Nice print but a £300 printhead destroyed by just about any accident.

Features War

Throughout the 1980s the majority of printers were dot matrix like those described above. It is possible that more actual output came from band and drum printers because they are fast and were commonly used for invoicing and utility billing. Dot matrix designs were elaborated on to make them better at graphics, giving them bigger memory buffers so that the printhead could do a whole swath in one pass at resolutions up to 250 dots per inch.   A second pass might be offset half a dot to make black areas darker. Offices switched from typewriters and daisywheel printers to NLQ dot matrix. Experience suggests that by far the majority of reports, correspondence, dispatch notes, invoices, sales tickets and so forth came from dot matrix machine varying in size from little personal machines like Star-Micronics ranging up to Genicom and Printronix line-printers.

Dot matrix has some very real advantages. Print can be cheap, inked ribbon was produced for years to meet the needs of the typewriter industry so there were lots of factories that could make them. The OKI Microline 82/83/84 printers deliberately took a big typewriter ribbon to make them cheap to run. Manufacturers were beginning to catch on to the benefits (for them) of cartridges.

Text produced on dot matrix printers was often adequate but never first-class - a daisywheel printer would give nicer looking print.

In the early 1990s several trends in computing coincided. Standardisation on the architecture used in the IBM PC brought economies of scale so prices fell. Microsoft Windows and the Office suite made PCs easier to use and also introduced graphics. Digital cameras were introduced and the price of scanners fell dramatically, increasing the demand for graphics. Minicomputers and terminals were displaced by PCs. And many of the people who bought PCs valued ease of use over anything else, so they wanted to put paper into a tray, not load it on forms tractors.

Judging by some of today's dot matrix products the printer manufacturers could have responded to the changed world better than they did. They didn't respond quickly enough and users replaced their printers. The replacements were often inkjets, sometimes laser printers.


Inkjet Printers

Inkjet printheads are completely unlike those for a dot matrix printer. Instead of a coil and a pin there is a nozzle with a heater or a piezoelectric ejector. The ink is supplied as liquid, either from a cartridge on top of the printhead or via a pipe alongside the trailing cable.

The big advantage of the inkjet printhead is that it can have more nozzles per printhead than a dot matrix could have pins. Early inkjets had 12 nozzles, making similar sized marks to a dot matrix printer in about the same time. Manufacturers chose 12 nozzles to give their new designs some competitive advantage over dot-matrix printers.

The best way to make inkjet heads turned out to be a using chip-making techniques, modified to create the ink channels. The elctronics on an inkjet head is not particualrly complicated compared to a processor or gigabyte RAM; but in addition to the electronic parts there is some plumbing. By using chipmaking techniques, inkjet manufacturers got that ability to double and redouble the number of nozzles with successive generations of products. In the Early 1990s HP Deskjet had 50 and the Epson Stylus Color had 48 on the black head (only 16 for each colour on the colour head). Furthermore these nozzles were becoming microscopic, the dot of ink was very small, giving the Epson printer the 720dpi output which meant photographic output looked really quite good.

Inkjets therefore had those small dots that the dot-matrix designers couldn't quite achieve. Inkjet printers quickly went beyond Near Letter Quality to equal laser and daisywheel print. Within a few years photos produced by inkjet printers were virtually indistinguishable from those produced by chemical photography.

The number of nozzles has climbed. It isn't unusual for an inkjet to have several hundred nozzles per head, and business-oriented machines may have 1,000 or more. In terms of both fine print and rate of inking the paper the dot-matrix can't compete.

Inkjet printers have therefore shared in the Moore's Law progress that delivers computers with gigabytes of RAM and terabyte hard disks, and cameras with 10 megapixel image sensors to fill those memories up.

Another benefit of inkjets is the relative ease with which they can deliver colour. One way is to divide one printhead up into a tri-colour device like that for the original Stylus Color mentioned above.

Obviously what did change was the size of the memory buffers, a set of 6 or more printheads with a thousand nozzles working at 4800 dpi needs a lot more memory than one with 9 pins working at 250dpi. Something like half a megabyte might be needed for the typical inkjet 8-inch swath, but since Moore's law applies to memory that is now a cheap chip. More processing power might be needed as well, but that price has fallen too. Sometimes both memory and processor are in a single ASIC chip.

Inkjet printheads were originally intended to be cheap enough to be disposable. When the idea of photographic quality output took hold that began to seem less relevant. Inkjets print became one of the few way to get photographic quality from a computer printer and digital camera. (Others were dye-sub and colour laser). Inkjet printheads capable of photographic quality were rather expensive for disposable items, comparable with a bottle of fine wine or a restaurant meal, rather than a ball-point pen.

Aside from these obvious differences in most other respects inkjet printers weren't very different from their dot-matrix cousins: paper motor, carriage motor, and a pattern of dots to be made by the printhead. Many even used the same print languages as their predecessors.


Laser Printers

The first laser printers were developed at Xerox PARC in the early 1970s. The timing is contemporaneous with the first dot-matrix printers and the bulk of the mechanism is similar to a photocopier, which became common office machinery in the 1970s.   A laser printer is basically a photocopier, but the page-scanning mechanism of a bright light with lenses and mirrors is replaced by the laser, a polygon mirror to make it scan and a modulator to turn the beam on and off. The page image is created by a stream of data controlling the laser beam .

The problem is making the page image.

With dot-matrix and inkjet printers a pre-arranged image of a print-swath may be needed before the printhead acts. As pointed out above it just needs to be sufficient for one pass of the print-head; after that the mechanism can stop and wait. The memory buffers needed are not large - just a few kilobytes for a dot-matrix and perhaps half a megabyte for a very high resolution inkjet photo printer.

Laser printer mechanisms can't stop once the page starts printing; if they did the page would be ruined because transfer drum surfaces would be next to the developer and paper carrying partial images for too long a time, getting over exposed and a black mark. Also the scanner motor and drum motors could not remain in synch, so part of the image would be missed, and slack in the motor drive gearchain would slightly misposition the drum when printing resumed. Laser printing is page-printing, the whole page must print in one smooth action.

If the image were just lines of text the mechanism could be very like that used for a screen video display but instead of 25 lines of 80 characters something like 66 lines of 80 (5280) characters. Xerox Alto computers had a portrait oriented screen to show a page image matching the expectation people then had to see a page on the screen as they would on their desk. A page shaped screen matched and integrated well with the printer However to make sense of the laser printers cost and potential it probably needed to offer higher quality print than would be seen on the screen and more by way of graphics.

What a laser printer offers is the potential for good graphics, but it poses a computing problem. All the pixels making up the page image need to be ready when the scanner and drum start to turn and there are potentially a great many pixels on a page. A single 11x8 inch A4 page printed at 300 dpi is about 8 million pixels; if they are recorded as a pixel per bit that's a megabyte of memory. At the time laser printers were first conceived that was the kind of memory found on a large mainframe computer. (PARC's Alto computers had 64 kilobytes - just a sixteenth as much). Early laser printers had to be expensive because pixels on the page generally needed bits in memory.

Various tricks can be used to reduce memory. For instance the HP 2680A laser printer of 1980 divided the page into cells and positioned them using a specially designed bit-slice microprocessor. Essentially the cells are like individual characters but in various sizes and positioned by coordinates. The 2680A broke new ground with a price around $120,000 which may seem extraordinary these days but reflected the complexity of a machine that was not mass-produced.

HP's Laserjet printer launched in 1985 at a cost around $3000 broke new ground. Based on a Canon LBP-8 engine fairly exp

Evolution of Print Standards

Through to the 1980s there was one fairly sure-fire way to attach a printer to a computer and that was to use RS-232. RS-232 is an EIA standard first introduced in 1962 and intended to control teleprinters over phone wires using modems. Since teleprinters were often used as printers it might seem at first glance that the standard would be ideal. It was In today's screen-oriented world it is easy to forget that the print industry was huge. Bell Labs could afford to develop UNIX and the troff suite of typesetting utilities because they would do a better job more cheaply than typesetting by hand. The machines were being marketed by Singer. computer aided typesetting