Peripheral Interchange Program (PIP)
Peripheral Interchange Program(PIP)は、デジタル・エクイップメント・コーポレーション(DEC)のコンピュータにおいて、データファイルの転送を行うためのユーティリティです。このプログラムは1960年代に
PDP-6で初めて実装され、その後
PDP-10や
PDP-11など他のDEC製コンピュータでも利用可能になりました。
歴史
PIPはもともと「ATLATL」という名称で知られていました。この名称は「Anything, Lord to Anything, Lord」の略で、どのデバイスでもファイルをコピーできるという特性を示しています。具体的なコマンド構文は、時間を経るにつれて「PIP destination=source」という形に落ち着きました。この形は、
英語の一般的な語順とは反対であるため、PDP系のマシン上で数多くのユーティリティが作成される中、「COPY source destination」といった別の構文も生まれました。しかし、PIPも1980年代半ばには依然として広く使用されていました。
CP/M|CP_M環境において、
ゲイリー・キルドールはPIPのファイル転送機能を、
RSTS/E|RSTS_Eなどの他システムから借用しました。
フロッピーディスク間でのファイルコピーが可能で、例えば「A>PIP B:=.[V]」とすることで、ドライブAのすべてのファイルをドライブBに確認付きでコピーすることができます。
CP/M|CP_MのPIPは、通常のファイルのコピーだけでなく、特別なファイル間でのデータの転送も可能でした。
このような特別なファイルには次のようなものがあります:
- - CON: コンソール(入出力)
- - AUX: 補助デバイス。CP/M|CP_M 1および2ではAUXの代わりにPUN(紙テープパンチ)やRDR(紙テープリーダー)が使用されました。
- - LST: リスト出力デバイス。通常はプリンターへの出力を指します。
- - PRN: LSTに似ていますが、行番号が付与され、タブ文字が展開され、60行ごとにフォームフィードが挿入されます。
- - NUL: ヌルデバイス。入力としては/dev/zero、出力としては/dev/null|_dev_nullとして機能します。
- - EOF: End Of File文字(ASCII 0x1A)を生成する入力デバイスです。
- - INP: 特殊な入力デバイス。デフォルトではEOFと同様の機能を持ちます。
- - OUT: 特殊な出力デバイス。NULと同じ機能を提供します。
これらのデバイスはPIPでのみ使用されるため、純粋な意味での特別なファイルではありません。特にカスタムデバイスに関しては、PIPプログラムの先頭に特定の位置で呼び出しコードが実装されており、ユーザーや
OEMがその位置に
パッチを当てることで独自の入出力機器をサポートする意図がありました。プログラム内には、そのための246バイトの空き領域が確保されていました。
また、
CP/M|CP_Mでは「PIP destination=source」という構文に加え、「PIP destination_source」といった構文も存在しました。この理由は、一部の
端末が「_」を左向きの矢印として表示していたためです。具体的には、「PIP destination←source」と表示されることがありました。しかし、これは文書上では明記されておらず、ファイル名に使用される文字の種類自体が明確には定義されていなかったため、
アンダースコアを含むファイル名もエラーとはならず、それに伴いPIPにおいて正しく動作しないファイル名が存在する可能性も敢然としていました。
関連項目
- - copy (コマンド): DECのマシンやDOS、OS/2、Windowsにおけるファイルコピーコマンド。
- - cp (UNIX): UNIX系オペレーティングシステムにおけるファイルコピーコマンド。
- - カーミット (プロトコル): データ転送に関連するプロトコル。
PIPはその登場以来、様々な形でファイル転送の基盤を形成し、後のテクノロジーへの影響も大きかったユーティリティの一例です。