Line Printer Does Its Best Teletype Impression

Back in the early days of computing, user terminals utilized line printers for output. Naturally this took an incredible amount of paper, but it came with the advantage of creating a hard copy of everything you did. Plus it was easy to annotate the terminal output with nothing more exotic than a ballpoint pen. But once CRT displays became more common, these paper terminals (also known as teleprinters, or teletypes) quickly fell out of style.

A fan of nostalgic hacks, [Drew DeVault] recently tried to recreate the old-school teletype experience with (somewhat) more modern hardware. He picked up an Epson LX-350 line printer, and with a relatively small amount of custom code, he was able to create a fairly close approximation of what it would have been like to use one of these terminals. He’s published all the source code, so if you’ve got an old line printer and a Linux box, you too can learn what it was like to measure your work day in reams of paper.

This is made possible by the fact that the modern Linux virtual terminal is simply a userspace emulation of those physical terminals of yore. [Drew] just need to write some code that would essentially spawn a shell on the Linux USB line printer device, plus sprinkle in some quality of life improvements such as using Epson’s proprietary ANSI escape sequences to feed the paper out far enough so the user can see what it says before pulling it back in to write the next interactive line.

Of course, the experience isn’t perfect as the printer naturally doesn’t have a keyboard attached to it. If you’re looking for something a bit more authentic, you could always convert an old electric typewriter into a modern-ish teletype.

22 thoughts on “Line Printer Does Its Best Teletype Impression

  1. Line printers are different from character printers. An 80 or 132 column line printer would have 80 or 132 print wheels. At entire line of text would be printed in one (very loud) action.

    1. I bought a line printer (chain printer, I think) at an auction for cheap once. It’s the size of a washing machine. I was excited to set it up and use it for… something. I bought a box of 132 column fan-fold green and white paper. Then I found out it only prints upper case. Completely useless for printing source code in any language popular since FORTRAN….

  2. Makes me miss the Panasonic one that came with my 486. That thing was loud as hell but also somewhat satisfying? One thing you could do that isn’t possible with newer printers is printing out long banners. Not that the quality was very good. And I fished out so many paper jams back in the day with the tractor fed paper

    1. It depends on printer. I got cheapest OKI color laser and it can print up to 1.6m in one go (not tested that yet). Probably that figure is because of memory constraints (you can’t really stop a laser mid-print, whole page must be done in one go) or some mechanism overheating on long prints. Quality is very good.

  3. Reminds me of my first printer. (On an Apple 2 Plus and then on an Apple 2E and finally on an variety of PCs.) It also was an Epson MX100. Incidentally the ASCII character set we use was originally created for the teletype families.

  4. Technically those are not line printers, but serial matrix printers, which print one character after another. A line printer prints a whole line of print at the same time, and would not be the type used as a terminal printer.

    1. Wasn’t there a sort of intermediate class of dot-matrix printer that printed only a line at a time, but did so one column of dots at a time? They didn’t have the interactive luxury of stopping the printhead partway through a line, and so were very much cheaper than something like an LA36, but they weren’t at all like mainframe line printers, either…
      (huh. I guess most modern inkjet printers are in a similar category!)

  5. Oh yes, a loud memory here: Back in time I had a vic20 and low budget.
    Solution came from a Hamfrend who had a spare siemens t50b (telex machine 50 baud).
    With a bit of 6502 machine code I used the via port on the vic20 to print on the T50b. (convert ascii to baudot code 8 to 5 bit)
    Once we did a rtty contest, 48hrs of sending rtty pictures and over the air with 2 of these machines.
    Nice but heavy

  6. The print mechanism of the Teletype was like a typewriter, in that when it was not printing, it sat below the print line. This would allow you to see what you’ve typed so far, just like a typewriter.

    Decwriters had a print head that would shift over to the right about an inch or so in order to allow you to read what was behind it. This would happen if you would pause typing for a few seconds. When you started typing again, it would zip back to the left and print each character as you typed it.

    Other terminals did the paper up/down movement that this hack did in order to allow you to see a partial line of type. That was the most disconcerting, since the paper jumping like that would make a bit of noise. Also, it was more difficult to tell where the printhead was, making it harder to align multiple columns of type without counting your characters.

  7. “Of course, the experience isn’t perfect as the printer naturally doesn’t have a keyboard attached to it.”

    Well not to be pedantic (oh, who am I kidding I LOVE to be pedantic!) but the printer is attached to the linux machine by a USB cable and I would assume the linux machine has a keyboard (even if it’s virtual) so the printer DOES have a keyboard attached to it, indirectly admittedly, but still attached.

  8. Yes, line printers were used for output when mainframe computers did data processing in batch jobs, before time-sharing and CRT interactive terminals became commonplace. However an Epson LX-350 is a dot matrix printer, not a line printer. Line printers were large machines that printed an entire 132 character line on fanfold paper at once, making printing very, very fast. Line printers were NOT “user terminals”, they were maintained by the mainframe operators, who kept them fed with paper and directed output jobs to printers that were online. A typical computer user would submit a job to the computer room in the form of Hollerith punch cards, then come back some time later to collect the output as a stack of fanfold paper. This was typical for mainframe and minicomputers (but not personal computers) until laser printers and electronic documents made line printers obsolete. Today the Hercules mainframe emulator prints to PDF files. In Linux the /dev/lp devices (lp0, lp1 etc.) corresponded to the parallel port(s) on Compaq-style (‘386 and up) PCs.

    Teleprinters are something entirely different. Even after the invention of the telephone, telegraphy was the most technologically advanced and cost effective way to send messages over long distances. The teleprinter (best known in the US as made by the Teletype Company, a division of the Western Electric division of the original AT&T) allowed telegraph stations to be unmanned overnight and still receive messages. The same technology also enabled the telegram, a telegraph message that was printed out and delivered by messenger to the recipient. When long distance phone lines were rare and of variable quality, sending a telegram ensured that your message would be received. Teleprinters were used to send stock data, news and weather reports to multiple receiving printers around the world before the Internet existed. Dial-up telegraph systems like Telex and TWX allowed point-to-point messaging directly, and was a forerunner to chat and texting.

    Teletype machines for use over telegraph and phone lines used Baudot code, a 5-bit standard that often used 5-hole paper tape to store and forward messages. Computers used BCD, EBCDIC and ASCII as their native text, and mainframe consoles were initially large panels with many switches, knobs and blinkenlights used to test the hardware and perform the IPL. Large computers typically had one or more privileged system consoles used by the computer operator. If there was a time sharing system on the computer, users would be connected to the computer using vendor-specific hardware. As telegraphy waned, surplus Teletype machines came on the market, and third party vendors found ways to connect Teletype machines to computers as inexpensive alternatives to OEM terminals.

    I did my first computer programming in BASIC using a Teletype terminal connected by phone lines to the IBM mainframe belonging to my school district. we would write our programs offline, using paper tape as storage. One day a week we’d get access to the mainframe, and one by one we’d run our tapes through the reader, and if the program executed, we’d see output on the teleprinter.

    Smaller computers like the DEC PDP line used the “tt” shorthand to signify a Teletype terminal in its native PDP operating systems, and AT&T (owner of the Teletype Company) used “tty” devices in its UNIX operating system. The college I attended as an undergrad used Gandalf terminal concentrators to connect video terminals across the campus using standard telephone lines to several computers running various flavors of UNIX. We could do things interactively, but to get a hard copy to turn in for grading, the output had to be sent to a line printer in the computer room. Years later when I took a C programming course, it was the same drill, albeit with a SPARCstation and terminal emulation software running on personal computers. I had been experimenting with Linux and started compiling my homework at home on a Linux box, printing my work out on an old MX-80 printer. The instructor accepted my homemade homework because the gcc compiler was the same, but asked if I could do my output on a laser printer.

    A Linux virtual terminal is NOT “a userspace [sic] emulation of those physical terminals of yore.” Virtual terminals came into being on the UNIX operating system to support non-serial shell sessions from remote hosts, using the rsh and telnet commands, and later to support terminal windows for the X Window System. The fact that RS-232 ports are no longer a feature of new personal computers is not proof that pts devices are a replacement for ttyS devices. Once more, a dot matrix printer is not a line printer, and neither of them are terminals. There actually are fonts that are designed to mimic the look of old Teletype machines and line printers (the IBM 1403 is a favorite) that can be used with any contemporary graphical environment and printer, but trying to use them on an old dot matrix printer will yield unsatisfactory results.

  9. The real experience can only be experienced if the control-G bell makes a loud bell sound. Once some mischievous person in my university sent 100s of bells to another person on a real teletype terminal, your tty was world writeable in those days, and it was so loud that people started leaving the room as they thought it was a fire-bell….

    1. Heh. When “Close Encounters of the Third Kind” came out, I wrote a little bit of code that would send control-Gs to various idle terminals in the “terminal room” at school. You could only send to idle terminals by then, but there were ~40 terminals of several different types, so it was … fun.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.