Peripheral Interchange Program ( PIP ) は、 Digital Equipment Corporationのコンピュータ上のデバイス間でファイルを転送するためのユーティリティでした。これは、1960 年代初頭に Harrison "Dit" Morse によってPDP-6アーキテクチャに初めて実装されました。その後、DEC のPDP-10、PDP-11、およびPDP-8 [ 1 ]アーキテクチャ用のオペレーティングシステムに実装されました。1970 年代と 1980 年代には、Digital Research がCP/M [ 2 ] およびMP/M [ 3 ]に PIP を実装しました。
開発中はATLATLという名前だったと言われており、これは「何でも、主よ、何でも、主よ」の頭文字をとったものです。[ 4 ]これは、デバイスに依存しないファイルコピー ツールとしての目的と、当時デバイス間でファイルを安全にコピーすることの難しさの両方をユーモラスに表現しています。
元のPIP構文は
PIP宛先←ソース/スイッチ
当時Flexowriterキーボードで使用されていたASCII -1963文字セットの左矢印文字を使用していた。ASCIIの後のバージョンの(左矢印文字を含まない)他の端末が導入されると、PIPは構文を許可した。
PIP宛先=ソース
左矢印と同じASCII文字位置にあったアンダースコア(_)文字は、宛先と送信元の指定を区切るために引き続きサポートされていました。
ソースと宛先はファイル仕様文字列でした。これらは、デバイス名(通常はデバイスの種類を表す2文字、例えばDK(ディスク)、LP(ラインプリンタ)、MT(磁気テープ)など)、0から7までのユニット番号、コロン(:)、ファイル名、拡張子で構成されていました。
一般的に、理にかなう限り、任意のファイル形式間でのコピーが許可されていた。
VAX/VMSの初期バージョンでは、 DIRECTORYやRENAMEなどの特定のDCLコマンドを、 RSX-11M PIPを互換モードで実行することで実装していました。このPIPの使用はVAX/VMS 2.0でVAX固有のコードに置き換えられましたが[ 5 ]、PIPはVMS用のVAX-11 RSXレイヤード製品の一部として残りました[ 6 ] 。

PIP.CMDCP/M-86において
PIPのコマンドを使用してCONからテキストファイルを作成する例:コンソール入力CP/MとMP/Mを開発したゲイリー・キルダルは、そのファイル構造とコマンドプロセッサの設計の多くを、PDP-11用のRSTS/Eなど、Digital Equipment社のオペレーティングシステムに基づいて行った。CP/MのPIPコマンドは、フロッピーディスク上のファイルにアクセスするだけでなく、以下の「特殊ファイル」との間でデータを転送することもできた。
しかし、これらは厳密にはデバイスファイルではありませんでした。なぜなら、その処理はPIPに限定されていたからです。カスタムデバイスINP:とOUT:は、PIPプログラムの開始時に固定された場所への呼び出しとして実装されていました。これは、ユーザーまたはOEMがこれらの場所をパッチして、独自の入力デバイスまたは出力デバイスを追加できるようにするためでした。この目的のために、プログラム内に246バイトの空き領域が確保されていました。
通常の構文に加えてPIP destination=source、CP/M 上の PIP は古いPIP destination_source形式のファイル名も引き続き許可していました。この動作は文書化されておらず、CP/M にはファイル名に使用できる文字に関する標準規格が一般的に存在しなかったため、他のプログラムがアンダースコア文字を含むファイル名を作成することが可能であり、実際に作成されていましたが、PIP はそれを処理できませんでした。
Microsoft Windows でファイル名が予約されている理由は、PIP プログラムが原因ですCONPRNAUXNULCOM0COM1COM2COM3COM4COM5COM6COM7COM8COM9LPT0LPT1LPT2LPT3LPT4LPT5LPT6LPT7LPT8LPT9。この制限は大文字と小文字を区別せず、ベース名にも適用されます。したがって、たとえば、Con.txtは無効なファイル名です。