27

In the answer to another question about printers, the following claim is made about 9-pin printers:

The Epson MX-80, upon which many other printers were based, had nine round pins which were vertically spaced at 1/72" intervals… The MX-80 graphics commands were limited to using the top 8 pins, and only allowed software to specify every other dot (yielding 1/60" resolution or 1/120" resolution) but text mode would exploit the full resolution.

Reading this was a huge a-ha moment for me, as I finally understood why the cheap Epson-compatible printer I used in the 1980s (a Smith-Corona Fastext 80) always left horizontal gaps at regular intervals when printing graphics. It annoyed me to no end that all the solid areas and lines in the images I printed got broken up like this! Below is an example of what I'm talking about—this is a scan of a real graphic that I produced using Doodle on my Commodore 64 in 1987. (I copped the Garfield cartoon from somewhere but added the journal he's holding to promote our class newspaper.) Unfortunately the scan isn't of great quality (and is of a photocopied image rather than the original printout) but you can make out the gaps in some places, and particularly in the area I've highlighted and magnified.

A scan of a printout from a Smith-Corona Fastext 80 showing a cartoon image of Garfield the cat holding a newspaper. The solid black lines making up the image are broken at regular intervals by white horizontal gaps.

So I assume now that these horizontal gaps are a result of the printer using only the top 8 of its 9 pins, but advancing the paper roll the height of the full 9 pins after every printed line.

My question is this: Why did the Epson MX-80 and its descendants not use the full 9 pins to print graphics? Was there some technical reason why this was not possible or desirable? (And were any of those printers smart enough to advance the paper roll by the height of 8 pins rather than 9 when printing graphics, thus avoiding those ugly gaps?)

  • 13
    I remember printers having both commands for 8 pin and 9 pin graphics, and also commands to advanced the line by "8 pins" and "9 pins" for seemless graphics in both modes. The obvious issue with 9 pins is that bytes have 8 bits, so encoding 9 is either wasteful or more complex, and requires buffering, both on the printer and computer side. That's why having 8 pin graphics is a no-brainer. – dirkt Jun 10 at 10:46
  • 17
    Apparently Garfield not only hates Mondays, but also non-powers-of-2. – DrSheldon Jun 10 at 14:23
  • 2
    I’m not posting an answer because that’s NOT what you asked, but your premise might be a bit off. I owned that particular printer (my first!) and it had some odd quirks. For example I think it could not do a Carriage Return without advancing the feed at least one pin down, likely a mechanical limitation (this has to be documented in the manual because I had no other source of information and I’m pretty sure I know about it, vs. deducing it). That could and would mess with software and result in banding depending on how the printing routine worked. I don’t remember all the details. – Euro Micelli Jun 10 at 17:04
  • 2
    The Fastext 80 also had a tiny buffer and could not print a whole line of graphics in one shot. If you wanted to cover the whole page horizontally the software had to issue multiple, consecutive graphical commands for each line, with each one not exceeding the limit (maybe 200 bytes? I don’t remember; it’s been 35 years). The head would stop and reset back a bit (I presume to give the head enough time to reach the prescribed speed) before printing the next block. It took four (was it five?) blocks to cover the width of the page – Euro Micelli Jun 10 at 18:24
  • 2
    The Fastext 80 would also overheat after printing 1/3 page of 100% black block graphics. Or 1/2 page of 100% black bitmap graphics. I suspect the reason that it could print more in bitmap mode was that bitmap mode was much slower (due to the interfaces being slow, and also due to the extraneous head movements mentioned by Euro Micelli; I guess the buffer size was 80 bytes), so it would build up heat at a slower rate. – Klaws Jun 12 at 7:36
29

First, it may be good to know that the MX-80 did not feature a bitmap mode for graphics, but only 64 symbols. The MX-80 also used 7 bit encoding, so no room for 8 bit graphic data. It was the MX-80 Type II that included it. So while the name is used simply as MX-80, it's always the MX-80 Type II we're talking.

Second, Just because some printer looked alike, doesn't mean it understood the commands equally well - or it's mechanic had the same quality.

So I assume now that these horizontal gaps are a result of the printer using only the top 8 of its 9 pins, but advancing the paper roll the height of the full 9 pins after every printed line.

Right... err ... at least basically.

If that was the reason, and if it was constant, it's most likely not the fault of the printer, but a wrong command to advance the paper (ESC+A).

But looking at the picture included, the gaps seam to be less than a pixel height. So it may not have been a wrong command, but simply less than desirable mechanics, always leaving a little gap. This is known from many printers, including genuine Epson MX-80. It doesn't make a big difference for text (especially if always about the same), but comes up in graphics.

These 'modulations' were simply part of bitmap graphics around 1980. Although, printers did advance (*1)

Why did the Epson MX-80 and its descendants not use the full 9 pins to print graphics? Was there some technical reason why this was not possible or desirable?

Simply because it used 8 bit words (bytes) to for data transmission, transferring 9 bit data would have meant doubling the data transmission time amount for 12.5% faster printing. While this sounds strange from today - or even from the mid 80s, then the MX-80 was made, serial connections with less than 9600 bit/s were standard for printers.

Not to mention that it was way more convenient to handle graphic data in 8 bit chunks on computers operating with 9 bit bytes - this includes 'high level part' (*2) of the printer as well, especially for buffering

It wasn't until later when connections were by default faster (like in fast parallel interfaces) buffer sizes larger and print speed became a thing (*3). So printers like the 1986 Star LC-10 included a 9 pin mode.

With more memory comes more power :))

And were any of those printers smart enough to advance the paper roll by the height of 8 pins rather than 9 when printing graphics, thus avoiding those ugly gaps?

Already the original MX-80 (Type 1) could set the paper advancement in steps of 1/72 inch, essentially to each needle height. Its mechanics operated in 1/216 inch steps. The Type II inherited this. But here as well, advancement was less than perfect, leaving artifacts. They are even visible in the original Epson manual printing:

Fill examples from Epson MX-80 Type II Manual

(Taken from Epson MX-80 Type II Manual p.83)

Long story short: Don't expect a 1965 VW-Beatle show features and performance of a luxury car (or in looking back the one of a 1990 VW Golf)

You could have bought a way more expensive printer, or waited 5-8 years for consumer products growing in quality ... or do like you (and we all) did, proudly show the results and live with these tiny, negligible artefacts.


*1 - It's like always, first generation is to fulfill the demand to print / compute / display / type / etc. at all, later generations will (and need to, to compete) improve and add 'luxury' features. The MX-80 is a great example, as it was the second versions that includes more than block graphics. And it took later printers to improve the mechanics to make bitmap look good - the first original one was only meant to make text.

*2 - It included two micro-controllers. An 8049 doing over all control as well as data transfer from/to interface, buffering, conversion from ASCII to bitmap and control of the needles and a (slave) 8041 handling the printing mechanic like head and paper advancement.

*3 - Like with *1, faster printing is a later improvement - with bitmap only way down the (time) line: printing -> printing bitmap -> printing bitmap without artifacts -> printing bitmap without and fast.

BTW, in other areas this sequence was different. For example the Siemens 9003, one of the fastest single head DMP in 1979. Here print quality was given up for speed. It's printouts didn't look great due simple fonts and inaccuracies of bidirectional printing, but it was dammed fast and all in a desktop case... well, desktop only in the sense it could be placed on a desk, so not being a stand alone device :))

| improve this answer | |
  • The MX80 manual was printed on MX80s? Those manual scans available for downloads don't look like that. – LаngLаngС Jun 12 at 13:06
  • @LаngLаngС No, but it includes verbatim copies from prints on page 82/83 showing the artefacts. I'd say it's safe to assume that Epson did not take a bad printer on purpose. Note, you got to check the Type II manuals, not the Type I as it didn't offer bitmap. – Raffzahn Jun 12 at 14:14
  • Oh, indeed, should have scrolled more. Care to include the important page number, and the interesting screenhot? – LаngLаngС Jun 12 at 14:19
  • 1
    @LаngLаngС already done. – Raffzahn Jun 12 at 14:20
  • I wonder if it would have been possible to produce a cost-reduced version of the MX-80 for the Apple II with zero microcontrollers, relying upon the computer's CPU for everything? It would need to include circuitry to bank an expansion RAM and ROM at $C800, but that would likely still be cheaper than using two microcontrollers, and could probably produce better graphics printing throughput too. – supercat Jun 12 at 15:00
14

There would be no technical reason to not use all nine pins, but it doesn't really help either. Remember that the computer speaks to it using 8-bit bytes. Sending 9-bit wide data requires buffering and/or other relatively expensive processing to do the 9-to-8 conversion and back. The upside would be that printing 9 pixels wide would be 12.5% faster than 8 pixels wide, but presumably the processing costs outweigh this.

However, it would not solve the banding problem. On a new printer, banding is caused by minor imperfections in the platen-moving mechanism and so the paper isn't always moved up to align the top of the current line with the bottom of the previous line, leaving an occasional gap. (You are much less likely to notice when it errs the other way and the lines slightly overlap.) On an older printer, banding also comes from the ribbon being worn unevenly, or even because one of the pins has broken.

Modern inkjet printers suffer the same sort of problems: printing in character-tall lines using cheap plastic gears and ink nozzles prone to clogging. Want a retro angle? The BJ10 is thirty years old.

| improve this answer | |
  • 4
    I looked through the ESC/P command set documentation. The 9-pin graphics mode requires sending two bytes per pixel column, but only one bit is significant in the second byte. So it's simple to decode, but simply slower than sending one byte per pixel column as in 8-pin mode. 24-pin printers would use 3 bytes per pixel column, which is equally efficient for the higher resolution. – Chromatix Jun 10 at 14:40
  • @Chromatix: I wonder if the 9th pin might have been more popular on the Apple II or other systems with 7-bit printer ports if the printer OR'ed together a bit 7 of the first byte with some other bit of the second, so as to allow 9-pin printing on a 7-bit printer port. – supercat Jun 11 at 15:19
11

EscP2 language did specify a 9-pin mode: ESC ^ but it was not very efficient, a whole byte was needed just to send the 9th pixel.

Epson reference manual

| improve this answer | |
  • This is precisely why 9-pin mode was avoided; it was just plain slow. – Alex Hajnal Jun 10 at 19:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.