Home page

The Early History of the more Command

Dan Halbert

(this article was first published March 4, 1994 on comp.society.folklore, and later published in The ANALYTICAL ENGINE, the Journal of the Computer History Association of California, Volume 1, Number 4, April-June 1994)

I was a first-year graduate student at UC Berkeley in 1978. I had been an undergraduate at MIT, and had used the ITS timesharing systems there, which ran on PDP-10's. ITS put a "--MORE--" at the bottom of the screen when one typed out files; you pressed the space bar to continue.

At Berkeley, we'd just gotten our first VAX UNIX system, though there were already PDP-11 UNIX systems. There was a very simple program through which one could pipe stdout to do screen-at-a-time output. It rang the terminal bell after printing 24 lines, and waited for a carriage return. It was called cr3. My guess is that in some version of UNIX, someone had hacked a page-at-a-time output mode into the tty output drivers. Using stty, one could already say cr0, cr1, and cr2, which added different amounts of delay when printing a carriage return, for the benefit of slow printing terminals. cr3 was probably unused, and the page- at-a-time mode was piggybacked on it. But our version of UNIX didn't have this cr3 stty mode; instead we had the cr3 program that provided equivalent functionality.

Many of the terminals at Berkeley were Lear-Siegler ADM-3 and ADM-3A "dumb" terminals. Both models (or maybe just the ADM-3's) rang the terminal bell when the cursor advanced to near the right margin, as a typewriter bell would. Unfortunately, they rang the bell on output as well as keyboard input, which made for incessant beeping. It was particularly maddening in a room full of terminals. So most of the bell speakers had been disconnected. Since cr3 rang the terminal bell to indicate that a full page had been output, you couldn't tell when it was waiting for input on those muted terminals. The problem was exacerbated by the slow response time of the overloaded UNIX systems.

So I wrote a simple cr3-like program, but had it print "--More--" instead of ringing the bell. I had it accept space instead of carriage return to continue, because that was what I was used to from ITS. I also made it take multiple filenames, and had it print lines of colons ("::::::::::::") before and after it printed each filename.

I named the program more. This was a daring move at the time, since it was such a long name for a UNIX command, and was also a real English word.

Subsequently, my friends and fellow graduate students Eric Shienbrood and Geoff Peck greatly expanded the program, adding all kinds of command line options and different possible responses to the "--More--" prompt. It was of course distributed in the BSD versions of UNIX.

Some time later, Don Norman wrote an article for Datamation entitled The Trouble with UNIX, in which he complained, among other things, about the cryptic nature of most UNIX command names, citing more as an example. I never did tell him that I thought more was a great improvement over cr3.

I was later amused to see more appear in MS-DOS.