page_title: Peripheral Interchange Program
section_title: PIP in CP/M and MP/M
hierarchical_section_title: Peripheral Interchange Program / PIP in CP/M and MP/M
caption_attribution_description: English: CP/M-86 screenshot
context_page_description: 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.
context_section_description: 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":
  CON: — console (input and output)
  AUX: — an auxiliary device. In CP/M 1 and 2, PIP used PUN: (paper tape punch) and RDR: (paper tape reader) instead of AUX:
  LST: — list output device, usually the printer
  PRN: — as LST:, but lines were numbered, tabs expanded and form feeds added every 60 lines
  NUL: — null device, akin to \Device\Null and /dev/null
  EOF: — input device that produced end-of-file characters, ASCII 0x1A
  INP: — custom input device, by default the same as EOF:
  PUN: — punch card unit:
  OUT: — custom output device, by default the same as NUL:
  These were not true device files, however, because their handling was limited to PIP. The two custom devices INP: and OUT: were implemented as calls to fixed locations at the start of the PIP program; the intention was that the user, or the OEM, could patch these locations to add their own input or output devices. 246 bytes of free space were left in the program for this purpose.
  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.
caption: PIP.CMD in CP/M-86
exif: {}