Peripheral Interchange Program ( PIP ) era una utilidad para transferir archivos en y entre dispositivos de las computadoras de Digital Equipment Corporation . Fue implementado por primera vez en la arquitectura PDP-6 por Harrison "Dit" Morse a principios de la década de 1960. Posteriormente se implementó para los sistemas operativos de DEC para arquitecturas PDP-10 , PDP-11 y PDP-8 [1] . En las décadas de 1970 y 1980, Digital Research implementó PIP en CP/M [2] y MP/M [3] .
Se dice que durante el desarrollo se le llamó ATLATL, que es un acrónimo de "Anything, Lord to Anything, Lord". [4] Esto describía con humor tanto su propósito como herramienta de copia de archivos independiente del dispositivo como las dificultades al momento de copiar archivos de forma segura entre dispositivos.
La sintaxis original de PIP era
Destino PIP ← origen / conmutadores
utilizando el carácter de flecha izquierda del conjunto de caracteres ASCII -1963 que utilizaban los teclados Flexowriter de la época. A medida que se introdujeron otros terminales que utilizaban versiones posteriores de ASCII (sin el carácter de flecha izquierda), PIP permitió la sintaxis
PIP destino=origen
El carácter de subrayado ( _ ), que estaba en la misma posición de carácter ASCII que ocupaba la flecha izquierda, todavía se admitía para separar las especificaciones de destino y de origen.
El origen y el destino eran cadenas de especificación de archivos . Estas consistían en un nombre de dispositivo, normalmente 2 caracteres para el tipo de dispositivo, como DK (disco), LP (impresora de línea), MT (cinta magnética), etc. y un número de unidad del 0 al 7, dos puntos (:), nombre de archivo y extensión.
Generalmente se permitía copiar de una especificación de archivo a otra cuando tenía sentido.
Las primeras versiones de VAX/VMS implementaron ciertos comandos DCL , como DIRECTORY y RENAME , ejecutando RSX-11M PIP en modo de compatibilidad. Este uso de PIP fue reemplazado por código específico de VAX en VAX/VMS 2.0, [5] pero PIP permaneció como parte del producto en capas VAX-11 RSX para VMS. [6]
Incluso a mediados de la década de 1980, el PIP todavía era de uso común en los sistemas TOPS-10 , TOPS-20 y PDP-11 .
Gary Kildall , que desarrolló CP/M y MP/M , basó gran parte del diseño de su estructura de archivos y procesador de comandos en sistemas operativos de Digital Equipment, como RSTS/E para el PDP-11. Además de acceder a archivos en un disquete , el comando PIP en CP/M también podía transferir datos hacia y desde los siguientes "archivos especiales":
Sin embargo, estos no eran archivos de dispositivo verdaderos , ya que su manejo estaba limitado a PIP. Los dos dispositivos personalizados INP: y OUT: se implementaron como llamadas a ubicaciones fijas al inicio del programa PIP; la intención era que el usuario, o el OEM , pudiera parchear estas ubicaciones para agregar sus propios dispositivos de entrada o salida. Se dejaron 246 bytes de espacio libre en el programa para este propósito.
Además de la PIP destination=source
sintaxis habitual, PIP bajo CP/M aún permitía la PIP destination_source
forma antigua. Este comportamiento no estaba documentado y CP/M generalmente no tenía un estándar para los caracteres que podían aparecer en los nombres de archivo; por lo tanto, otros programas podían crear, y de hecho lo hacían, nombres de archivo que contenían caracteres de subrayado, que PIP no podía manejar.
El programa PIP es la razón de los nombres de archivo reservados en 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
. Esta limitación no distingue entre mayúsculas y minúsculas y también se aplica a los nombres base. Por ejemplo, Con.txt
es un nombre de archivo no válido.