Peripheral Interchange Program
Peripheral Interchange Program was a utility to transfer files on and between devices on Digital Equipment Corporation's computers. It was first implemented on the PDP-6 architecture by Harrison "Dit" Morse early in the 1960s. It was subsequently implemented for DEC's operating systems for PDP-10, PDP-11, and PDP-8 architectures.
In the 1970s and 1980s Digital Research implemented PIP on CP/M and MP/M.
History
It is said that during development it was named ATLATL, which is an acronym for "Anything, Lord, to Anything, Lord." This humorously described both its purpose as a device-independent file copying tool and the difficulties at the time of safely copying files between devices.The original PIP syntax was
PIP destination←source /switches
using the left-arrow character from the ASCII-1963 character set that the Flexowriter keyboards of the time used. As other terminals were introduced that used later versions of ASCII, PIP allowed the syntax
PIP destination=source
The underscore character, which was in the same ASCII character position that left-arrow had occupied, was still supported to separate the destination and source specifications.
Source and destination were file specification strings. These consisted of a device name, typically 2 characters for device type such as DK, LP, MT, etc. and a unit number from 0 to 7, a colon, filename and extension.
Copying was generally permitted between any file specification to any other where it made sense.
Early versions of VAX/VMS implemented certain DCL commands, such as DIRECTORY and RENAME, by running RSX-11M PIP in compatibility mode. This usage of PIP was replaced by VAX-specific code in VAX/VMS 2.0, but PIP remained as part of the VAX-11 RSX layered product for VMS.
As late as the mid-1980s, PIP was still in common use on TOPS-10, TOPS-20 and PDP-11 systems.
PIP in CP/M and MP/M
Gary Kildall, who developed CP/M and MP/M, based much of the design of its file structure and command processor on operating systems from Digital Equipment, such as RSTS/E for the PDP-11. Besides accessing files on a floppy disk, the PIP command in CP/M could also transfer data to and from the following "special files":- — console
- — an auxiliary device. In CP/M 1 and 2, PIP used and instead of
- — list output device, usually the printer
- — as, but lines were numbered, tabs expanded and form feeds added every 60 lines
- — null device, akin to \Device\Null and /dev/null
- — input device that produced end-of-file characters, ASCII
- — custom input device, by default the same as
- — punch card unit:
- — custom output device, by default the same as
In addition to the usual
PIP destination=source syntax, PIP under CP/M still allowed the old PIP destination_source form. This behaviour was not documented, and CP/M generally did not have a standard for which characters could appear in file names; therefore other programs could and did create filenames containing underscore characters, which PIP could not handle.Reserved filenames in Microsoft Windows
The PIP program is the reason for in Microsoft Windows:CON PRN AUX NUL COM0 COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 COM9 LPT0 LPT1 LPT2 LPT3 LPT4 LPT5 LPT6 LPT7 LPT8 LPT9. This limitation is case-insensitive, and also applies to basenames. So for example, Con.txt is an invalid filename.