Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Those (apocryphal?) stories are exactly the wrong way to think about how the IBM 1401's line printer works. The line printer has a chain with all the characters that whips around very fast, but it is cleverly designed so you only fire one hammer at a time - it's not even possible to fire multiple hammers at once. The chain spacing is slightly off from the print position spacing (think a vernier scale), so there's only one chain position and print position lined up at any instant. A tiny movement of the chain shifts the alignment to a different character / print position, and so forth, so the potential print position shifts through the line much, much faster than the actual chain movement. Thus, every 11.1 microseconds, a single chain position lines up with a single print position; the 1401 fetches the corresponding character from memory and if it matches the chain's character the hammer fires.

If the chain spacing matched the print column spacing (what the stories describe), you'd fire a bunch of hammers at once, wait while the chain moves one position, fire a bunch more hammers, and so forth. This is much less efficient, since most of the time you're not doing anything. The 1401's approach also makes the circuitry simpler, since it only needs to check one character against one hammer at a time, rather than checking 132 characters at once.

The 1401's printer is actually even more tricky: the chain spacing and hammer spacing are almost in a 3:2 ratio, so each minuscule movement of the chain moves the alignment by 3 print positions and 2 chain positions. So you're never printing two chain positions consecutively. By the time the chain has moved enough for the alignment point to wrap around three times, the chain has moved one character's width and is ready to start again with the next character. 48 of these cycles gives each character one chance to be printed in each column, completing printing of one line. This all takes just 80 milliseconds.

The line printing mechanism is difficult to understand, so I made an animation to show what's happening: http://ibm-1401.info/KenShirriff-1403Animation.html



That's a fantastic animation. It would have been incredibly useful back in the day.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: