<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Peripheral_Interchange_Program</id>
	<title>Peripheral Interchange Program - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Peripheral_Interchange_Program"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Peripheral_Interchange_Program&amp;action=history"/>
	<updated>2026-04-18T08:48:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Peripheral_Interchange_Program&amp;diff=196010&amp;oldid=prev</id>
		<title>98.213.2.103: /* History */ Fixed expansion of ATLATL to match citation.</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Peripheral_Interchange_Program&amp;diff=196010&amp;oldid=prev"/>
		<updated>2025-06-18T19:08:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;History: &lt;/span&gt; Fixed expansion of ATLATL to match citation.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{short description|File transfer utility}}&lt;br /&gt;
{{More citations needed|date=July 2009}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                   = Peripheral Interchange Program (PIP)&lt;br /&gt;
| logo                   = &lt;br /&gt;
| screenshot             = &lt;br /&gt;
| screenshot size        = &lt;br /&gt;
| caption                = &lt;br /&gt;
| author                 = [[Digital Equipment Corporation]] / Harrison &amp;quot;Dit&amp;quot; Morse&lt;br /&gt;
| developer              = [[Digital Research]] / [[Gary Kildall]], [[Heath Company]]&lt;br /&gt;
| released               = {{Start date and age|1960s}}&lt;br /&gt;
| latest release version = &lt;br /&gt;
| latest release date    = &lt;br /&gt;
| operating system       = [[DEC BATCH-11/DOS-11|BATCH-11/DOS-11]], [[RT-11]], [[RSTS/E]], [[RSX-11]], [[OS/8]], [[TOPS-10]], [[TOPS-20]], [[CP/M]], [[MP/M]], [[DOS Plus]], [[HDOS]], [[OpenVMS|VMS]]&lt;br /&gt;
| genre                  = [[Command (computing)|Command]]&lt;br /&gt;
| license                = &lt;br /&gt;
| website                = &lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Peripheral Interchange Program&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;PIP&amp;#039;&amp;#039;&amp;#039;) was a utility to transfer files on and between devices on [[Digital Equipment Corporation]]&amp;#039;s computers. It was first implemented on the [[PDP-6]] architecture by Harrison &amp;quot;Dit&amp;quot; Morse early in the 1960s.  It was subsequently implemented for DEC&amp;#039;s operating systems for [[PDP-10]], [[PDP-11]], and [[PDP-8]]&amp;lt;ref&amp;gt;[https://www.grc.com/pdp-8/docs/OS8_System_Reference_Manual.pdf OS/8], &amp;#039;&amp;#039;OS/8 System Reference Manual&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; architectures.&lt;br /&gt;
In the 1970s and 1980s [[Digital Research]] implemented PIP on [[CP/M]]&amp;lt;ref&amp;gt;[http://www.tramm.li/i8080/cpm22-m.pdf CP/M], &amp;#039;&amp;#039;CP/M Operating System Manual&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;  and [[MP/M]].&amp;lt;ref&amp;gt;[http://www.cpm.z80.de/manuals/mpm2ug.pdf MP/M], &amp;#039;&amp;#039;MP/M Operating System User&amp;#039;s Guide&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
It is said that during development it was named ATLATL, which is an acronym for &amp;quot;Anything, Lord, to Anything, Lord.&amp;quot;&amp;lt;ref&amp;gt;[http://www.jargon.net/jargonfile/p/PIP.html PIP], &amp;#039;&amp;#039;The [[Jargon File]]&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;  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.&lt;br /&gt;
&lt;br /&gt;
The original PIP syntax was&lt;br /&gt;
&lt;br /&gt;
 PIP destination←source /switches&lt;br /&gt;
&lt;br /&gt;
using the left-arrow character from the [[ASCII]]-1963 character set that the [[Friden Flexowriter|Flexowriter]] keyboards of the time used.  As other terminals were introduced that used later versions of ASCII (without the left-arrow character), PIP allowed the syntax&lt;br /&gt;
&lt;br /&gt;
 PIP destination=source&lt;br /&gt;
&lt;br /&gt;
The [[underscore]] ([[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.&lt;br /&gt;
&lt;br /&gt;
Source and destination were &amp;#039;&amp;#039;file specification&amp;#039;&amp;#039; strings.  These consisted of a device name, typically 2 characters for device type such as DK (disk), LP (line printer), MT (magnetic tape), etc. and a unit number from 0 to 7, a colon (:), filename and extension.&lt;br /&gt;
&lt;br /&gt;
Copying was generally permitted between any file specification to any other where it made sense.&lt;br /&gt;
&lt;br /&gt;
Early versions of [[VAX/VMS]] implemented certain [[DIGITAL Command Language|DCL]] commands, such as [[Directory (OpenVMS command)|DIRECTORY]] and [[ren (command)|RENAME]], by running [[RSX-11M]] PIP in compatibility mode. This usage of PIP was replaced by VAX-specific code in VAX/VMS 2.0,&amp;lt;ref&amp;gt;{{cite web|url=http://www.bitsavers.org/pdf/dec/vax/vms/2.0/AA-D015C-TE_VAX_VMS_2.0_Release_Notes_198003.pdf|title=VAX/VMS Release Notes Version 2.0}}&amp;lt;/ref&amp;gt; but PIP remained as part of the VAX-11 RSX layered product for VMS.&amp;lt;ref&amp;gt;{{cite web|url= https://manx-docs.org/collections/antonio/dec/aedl72cte.pdf|title=VAX-11 RSX Software Product Description}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As late as the mid-1980s, PIP was still in common use on [[TOPS-10]], [[TOPS-20]] and [[PDP-11]] systems.&lt;br /&gt;
&lt;br /&gt;
==PIP in CP/M and MP/M==&lt;br /&gt;
[[File:CPM-86.png|thumb|&amp;lt;code&amp;gt;PIP.CMD&amp;lt;/code&amp;gt; in [[CP/M-86]]]]&lt;br /&gt;
[[File:Digital Research DOS Plus Version 1.2 720x400.png|thumb|Example using the &amp;lt;code&amp;gt;PIP&amp;lt;/code&amp;gt; command in [[DOS Plus]] to create a text file from {{tt|CON:}} console input]]&lt;br /&gt;
[[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 &amp;quot;special files&amp;quot;:&lt;br /&gt;
*{{tt|CON:}} — [[System console|console]] (input and output)&lt;br /&gt;
*{{tt|AUX:}} — an auxiliary device. In CP/M 1 and 2, PIP used {{tt|PUN:}} (paper tape punch) and {{tt|RDR:}} (paper tape reader) instead of {{tt|AUX:}}&lt;br /&gt;
*{{tt|LST:}} — list output device, usually the [[computer printer|printer]]&lt;br /&gt;
*{{tt|PRN:}} — as {{tt|LST:}}, but lines were numbered, tabs expanded and form feeds added every 60 lines&lt;br /&gt;
*{{tt|[[Null device|NUL:]]}} — null device, akin to [[Null device|\Device\Null]] and [[Null device|/dev/null]]&lt;br /&gt;
*{{tt|EOF:}} — input device that produced [[end-of-file]] characters, [[ASCII]] {{tt|0x1A}}&lt;br /&gt;
*{{tt|INP:}} — custom input device, by default the same as {{tt|EOF:}}&lt;br /&gt;
*{{tt|PUN:}} — punch card unit:&lt;br /&gt;
*{{tt|OUT:}} — custom output device, by default the same as {{tt|NUL:}}&lt;br /&gt;
&lt;br /&gt;
These were not true [[device file]]s, however, because their handling was limited to PIP. The two custom devices {{tt|INP:}} and {{tt|OUT:}} were implemented as calls to fixed locations at the start of the PIP program; the intention was that the user, or the [[Original Equipment Manufacturer|OEM]], could [[Software patch|patch]] these locations to add their own input or output devices. 246 bytes of free space were left in the program for this purpose.&lt;br /&gt;
&lt;br /&gt;
In addition to the usual &amp;lt;code&amp;gt;PIP destination=source&amp;lt;/code&amp;gt; syntax, PIP under CP/M still allowed the old &amp;lt;code&amp;gt;PIP destination_source&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
==Reserved filenames in Microsoft Windows==&lt;br /&gt;
The PIP program is the reason for [https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions reserved filenames] in Microsoft Windows: &amp;lt;code&amp;gt;CON&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;PRN&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;AUX&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;NUL&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM0&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM3&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM4&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM5&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM6&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM7&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM8&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;COM9&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT0&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT1&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT2&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT3&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT4&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT5&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT6&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT7&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT8&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;LPT9&amp;lt;/code&amp;gt;. This limitation is case-insensitive, and also applies to basenames. So for example, &amp;lt;code&amp;gt;Con.txt&amp;lt;/code&amp;gt; is an invalid filename.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[copy (command)]] – RT-11, RSX-11, OpenVMS, AmigaOS, DOS, OS/2 and Microsoft Windows command for copying data&lt;br /&gt;
*[[cp (Unix)]] – Unix command for copying data&lt;br /&gt;
*[[Kermit (protocol)]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
{{Digital Research}}&lt;br /&gt;
&lt;br /&gt;
[[Category:CP/M software]]&lt;br /&gt;
[[Category:File copy utilities]]&lt;/div&gt;</summary>
		<author><name>98.213.2.103</name></author>
	</entry>
</feed>