Origin of CP/M’s PIP command

Last Updated on November 26, 2018 by Dave Farquhar

CP/M was, as you probably know, the first popular microcomputer operating system. It was good but imperfect, and its cryptic command for copying files, PIP, is often cited as an example. Copy makes sense. Even the Unix equivalent, cp, makes sense–it’s copy without the vowels. But what does PIP mean? What’s the origin of CP/M’s PIP command?

Origin of CP/M's PIP command
The CP/M operating system included a copy command with the curious name of PIP.

A commenter on my post about CP/M creator Gary Kildall told me he heard it stands for “peripheral interchange program.” So I looked, and he was absolutely right. I’d heard Kildall borrowed the command and syntax from a Digital Equipment Corporation minicomputer operating system, and, indeed, DEC’s famous PDP systems had a copy command called PIP, widely documented as an abbreviation for “peripheral interchange program.”

The multipurpose PIP command

PIP did more than copying. PIP could also print text files, so perhaps that’s why DEC named it peripheral interchange program. And back then, anything beyond a CPU and some RAM was a peripheral. The extras cost extra. Sometimes a lot extra.

Then again, maybe I’m putting too much thought into it.

Look at PIP syntax like a programmer

The syntax is weird, until you look at it like a programmer. Don’t get me wrong, I’m no more a programmer than I am a psychologist, but I got As and Bs in my programming classes in college so I at least know how to declare and set variables. And that’s exactly what the PIP command looks like. If I want A to equal B, that’s what I tell the computer. And if I want A to equal B plus one, that’s what I tell the computer. It was also what you told PIP.

That’s why you typed PIP B:=A:MYNOVEL.TXT to copy a text file from drive A to drive B.

But most of us don’t want to think like programmers

To most people, COPY A:MYNOVEL.TXT B: makes more sense. For that matter, so does the Unix equivalent.

And that’s probably why MS-DOS, which started life as a close clone of CP/M, deviated from CP/M in this particular regard. But keep in mind the time both systems were developed. Unix was still very new when Kildall was developing CP/M. DEC’s operating systems were more familiar. By 1980, when MS-DOS was in development, Unix was popular, so taking a friendlier spin on the Unix equivalent made sense by then.

Unlike many, or perhaps most Commodore 128 owners, I actually learned how to use CP/M and I ran a fair bit of CP/M software on it. I adjusted to it. CP/M was quirky, but by my count, I’ve learned and used five different families of operating systems that had command prompts. They all had their quirks. A lot of things we take for granted today used to be hard. But early systems like CP/M laid the groundwork for it, so I’m not complaining.

If you found this post informative or helpful, please share it!