Experiments in 8-bit printing 2025-06-24 In 2024-10, I read a discussion on Hacker News where people talked about how back in the day, you could just pipe text to the line printer (lpr). Someone said that this still works. So I tried it out. I have a Samsung M2070 Series printer/scanner. I use Arch Linux with CUPS. I have configured the printer with system-config-printer on one system and over localhost:631 on another. I have set the printer to be my default printer. I use the "Generic PCL Laser Printer" driver. I ran my experiments on 2024-10-12, 2025-06-18, and 2025-06-24. I found out that I could indeed just pipe text to "lpr -l". (The "-l" option ap- parently stands for "-o raw".) I got printouts in Courier with 64 lines per A4 page and 78 visible columns per line. (For lines with more columns, the CRLF at the end still worked, but the text was cut off, as if there had been no characters between the 78th column and the CRLF.) A backspace moved one column to the left. A carriage return moved to the beginning of the line. This let me overstrike characters: I could pro- duce underlines with the underscore and fake umlauts with the double quote character. Overstriking a character with itself did not produce bold characters, though. A line feed moved down to the next line, but stayed in the same column. To go to the beginning of the next line, I needed the classic CRLF com- bination. A form feed moved to the first line of the next page, but stayed in the same column (like a line feed). To go to the beginning of the first line of the next page, I needed to replace the last CRLF combination of a page with a "CRFF" combination. (The pattern "CRLF, form feed, CRLF", as used in various RFCs, moved to the second line of the next page in- stead.) A horizontal tab moved to the next column just after a multiple of 8 (as usual). The veritcal tab had no effect. Apart from the mentioned characters (backspace, horizontal tab, line feed, vertical tab, form feed, carriage return), the (hexadecimal) byte values 00 (null), 07 (bell), 0E (shift out), 0F (shift in), and 1B (es- cape) produced no graphical output. I have not tested whether the printer would react to escape sequences with the escape byte. All other byte values produced the corresponding characters from Code Page 437 (even 7F, "delete", that showed a "little house"). So I did not have to use overstriking to produce umlauts, and I could even do box drawing and some math.