Using the IBM Wheelwriter 10 Series II Typewriter as a printer

I can’t believe I’m having to write this article again. Back in 2004, I picked up an identical model of typewriter on Freecycle, also complete with the parallel printer option board. The one I had back then had an incredible selection of printwheels. And I gave it all away! Aaargh! Why?

Last month, I ventured out to a Value Village in more affluent part of town. On the shelf for $21 was a familiar boxy shape, another Wheelwriter 10 Series II Typewriter model 6783. This one also has the printer option board, but it only has one printwheel, Prestige Elite. It powered on enough at the test rack enough for me to see it mostly worked, so I bought it.

Once I got it home, though, I could see it needed some work. The platen was covered in ink and correction fluid splatters. Worse, the carriage would jam in random places. It was full of dust and paperclips. But the printwheel did make crisp marks on paper, so it was worth looking at a repair.

Thanks to Phoenix Typewriter’s repair video “IBM Wheelwriter Typewriter Repair Fix Carriage Carrier Sticks Margins Reset Makes Noise”, I got it going again. I’m not sure how much life I’ve got left in the film ribbon, but for now it’s doing great.

Note that there are lots of electronics projects — such as tofergregg/IBM-Wheelwriter-Hack: Turning an IBM Wheelwriter into a unique printer — that use an Arduino or similar to drive the printer. This is not that (or those). Here I’m using the Printer Option board plus a USB to Parallel cable. There’s almost nothing out there about how these work.

Connecting the printer

You’ll need a USB to Parallel adapter, something like this: StarTech 10 ft USB to Parallel Printer Adapter – M/M. You need the kind with the big Centronics connector, not the 25-pin D-type. My one (old) has a chunky plastic case that won’t fit into the port on the Wheelwriter unless you remove part of the cable housing. On my Linux box, the port device is /dev/usb/lp0. You might want to add yourself to the lp group so you can send data to the printer without using sudo:

sudo adduser user lp

The Wheelwriter needs to be switched into printer mode manually by pressing the Code + Printer Enable keys.

Printer Codes

As far as I can tell, the Wheelwriter understands a subset of IBM ProPrinter codes. Like most simple printers, most control codes start with an Esc character (ASCII 27). Lines need to end with both a Carriage Return (ASCII 13) and newline (ASCII 10). Sending only CRs allows overprinting, while sending only newlines gives stair-step output.

The codes I’ve found to work so far are:

  • Emphasized printingEsc E
  • Cancel emphasized printingEsc F
    (double strike printing [Esc G, Esc H] might also work, but I haven’t tried them)
  • Continuous underscoreEsc – 1
  • Cancel continuous underscoreEsc – 0
    (technically, these are Escn, where n = ASCII 1 or 0, not character “1” or “0”. But the characters seem to work, too)
  • 7/72″ inch line spacingEsc 1
  • Set text line spacing to n / 72″ unitsEsc A n
    (this one really matters: if you send “6” (ASCII 66) instead of 6, you’ll get 66/72 = 11/12″ [= 28.3 mm] line spacing instead of the 1/12″ [= 2.1 mm] you expected)
  • Start text line spacingEsc 2

Text functions such as italics and extended text aren’t possible with a daisywheel printer. You can attempt dot-matrix graphics using full stops and micro spacing, but I don’t want to know you if you’d try.

Sending codes from the command line

echo is about the simplest way of doing it. Some systems provide an echo built-in that doesn’t support the -e (interpret special characters) and -n (don’t send newline) options. You may have to call /usr/bin/echo instead.

To print emphasized:

echo -en 'well \eEhello\eF there!\r\n' > /dev/usb/lp0

which prints

well hello there!

To print underlined:

echo -en 'well \e-1hello\e-0 there!\r\n' > /dev/usb/lp0

which types

well hello there!

To set the line spacing to a (very cramped) 1/12″ [= 2.1 mm] and print a horizontal line of dots and a vertical line of dots, both equally spaced (if you’re using Prestige Elite):

echo -en '\eA\x05\e2\r\n..........\r\n.\r\n.\r\n.\r\n.\r\n.\r\n.\r\n.\r\n.\r\n.\r\n\r\n' > /dev/usb/lp0

Character set issues

IBM daisywheels typically can’t represent the whole ASCII character set. Here’s what an attempt to print codes 33 to 126 in Prestige Elite looks like:

tabulation of printable ASCII characters on orange background. Some characters are clearly missing

The following characters are missing:

< > \ ^ ` { | } ~

So printing your HTML or Python is right out. FORTRAN, as ever, is safe.

Prestige Elite is a 12 character per inch font (“12 pitch”, or even “Elite” in typewriter parlance) that’s mostly been overshadowed by Courier (typically 10 characters per inch) in computer usage. This is a shame, as it’s a much prettier font.

Related, yet misc.

There’s very little out there about printing with IBM daisywheels. This is a dump of the stuff I’ve found that may help other people:

  • Wheelwriter 10 Series II Typewriter 6783 Operator’s Guide (Internet Archive; nothing about the printer option)
  • IBM didn’t make too many daisywheel printers. Two models were the 5216 Wheelprinter and 5223 Wheelprinter E, possibly intended for larger IBM machines. The 5216 Wheelprinter looks like it may use similar character codes. Here’s a (Printer Definition File?? An IBM thing, I think) for that printer that might help the interested: ibm5216_pdf
  • The IBM 6901 “Personal Typing System” included a daisywheel printer (Correcting Wheelwriter Printer 6902) that looks almost identical to a Wheelwriter 10 Series II with the keyboard lopped off. But I can find nothing about it.
  • Word Perfect 5 may have had a driver for this typewriter/printer, but that doesn’t help me with the control codes.

largo

I just installed IBM® Lotus® Symphonyâ„¢. I don’t have the pokiest PC on the block, but in order to make it run at any speed at all, you’d need to have a bit of grunt in your PC. My VIA SP13000 box takes a couple of minutes just to bring up the main window.

To be fair, OpenOffice isn’t the fastest starter either; none of them have large bits of themselves running in the Windows system code, unlike MS OfficeThey both work, and are free – and Symphony looks a deal prettier than OpenOffice. As there’s no Mac version of Symphony yet, I’m unlikely to switch just yet.

All the printers I’ve ever owned …

bird you can see: hp print test

  • An ancient (even in 1985) Centronics serial dot-matrix printer that we never got working with the CPC464. The print head was driven along a rack, and when it hit the right margin, an idler gear was wedged in place, forcing the carriage to return. Crude, noisy but effective.
  • Amstrad DMP-2000. Plasticky but remarkably good 9-pin printer. Had an open-loop ribbon that we used to re-ink with thick oily endorsing ink until the ribbons wore through.
  • NEC Pinwriter P20. A potentially lovely 24-pin printer ruined by a design flaw. Print head pins would get caught in the ribbon, and snap off. It didn’t help that the dealer that sold it to me wouldn’t refund my money, and required gentle persuasion from a lawyer to do so.
  • Kodak-Diconix 300 inkjet printer. I got this to review for Amiga Computing, and the dealer never wanted it back. It used HP ThinkJet print gear which used tiny cartridges that sucked ink like no tomorrow; you could hear the droplets hit the page.
  • HP DeskJet 500. I got this for my MSc thesis. Approximately the shape of Torness nuclear power station (and only slightly smaller), last I heard it was still running.
  • Canon BJ 200. A little mono inkjet printer that ran to 360dpi, or 720 if you had all the time in the world and an unlimited ink budget.
  • Epson Stylus Colour. My first colour printer. It definitely couldn’t print photos very well.
  • HP LaserJet II. Big, heavy, slow, and crackling with ozone, this was retired from Glasgow University. Made the lights dim when it started to print. Came with a clone PostScript cartridge that turned it into the world’s second-slowest PS printer. We did all our Canadian visa paperwork on it.
  • Epson Stylus C80. This one could print photos tolerably well, but the cartridges dried out quickly, runing the quality and making it expensive to run.
  • Okidata OL-410e PS. The world’s slowest PostScript printer. Sold by someone on tortech who should’ve known better (and bought by someone who also should’ve known better), this printer jams on every sheet fed into it due to a damaged paper path. Unusually, it uses an LED imaging system instead of laser xerography, and has a weird open-hopper toner system that makes transporting a part-used print cartridge a hazard.
  • HP LaserJet 4M Plus. With its duplexer and extra paper tray it’s huge and heavy, but it still produces crisp pages after nearly 1,000,000 page impressions. I actually have two of these; one was bought for $99 refurbished, and the other (which doesn’t print nearly so well) was got on eBay for $45, including duplexer and 500-sheet tray. Combining the two (and judiciously adding a bunch of RAM) has given me a monster network printer which lets you know it’s running by dimming the lights from here to Etobicoke.
  • IBM Wheelwriter typewriter/ daisywheel printer. I’ve only ever produced a couple of pages on this, but this is the ultimate letter-quality printer. It also sounds like someone slowly machine-gunning the neighbourhood, so mostly lives under wraps.
  • HP PhotoSmart C5180. It’s a network photo printer/scanner that I bought yesterday. Really does print indistinguishably from photos, and prints direct from memory cards. When first installed, makes an amusing array of howls, boinks, squeals, beeps and sproings as it primes the print heads.

brr brr bddr brr weew brr brr

Apologies to our neighbours for my testing the Wheelwriter this morning. This is what I found out about it (after having to compile in parallel printer support to the kernel, grr):

Do we need CRs? : yes
Does it talk ASCII? : yes, subset
Bidirectional? : yes

I chickened out and installed the Courier 10 printwheel just so I could use spaces to line things up. I don’t like Courier at all, but at least it’s easy to manage.

It’s strange that, in this age that we are creating information at an unparalleled rate, we’re also losing it just as fast. While IBM Wheelwriter codes from the late 1980s do not represent the lost wisdom of the ancients, it is something of our knowledge, and once lost, diminishes us all.

Therefore, send not for whom the (carriage return) bell tolls; it tolls for thee …

A helpful error message

IBM
DB2
just gave me this far from helpful error
message:

DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0010N  The string constant beginning with "'" does not have an ending
string delimiter.  SQLSTATE=42603

As a human, or a close facsimile of one, I don’t need to
know the internal server codes DB21034E and
SQL0010N. I don’t need to know that the command was
processed as an SQL statement, because that’s what I was
hoping it would be all along. And I definitely don’t want
to know that SQLSTATE is 42603, for I’m not sure if it
would be very much better or worse if it were 42604. Or 2.
Or, for that matter, 999999999996.

And all this for mismatched quotes around a string.