Un fallo de Windows que data de 1974

Posiblemente hayas intentado sin éxito guardar archivos en Windows con nombres como CON.TXT, NUL.DOC o, como en la imagen, AUX.H. Es un problema muy antiguo que se mantiene en el moderno Windows 10 y que data de los tiempos de CP/M, un sistema operativo creado por Gary Kildall en 1974 y utilizado en ordenadores tan populares como el Altair 8800, el Apple II, el Commodore 64, e incluso el Amstrad CPC o el ZX Spectrum.

Cinco años antes, en los Laboratorios Bell, Dennis Ritchie, Brian Kernighan y Ken Thompson, entre otros, desarrollaron Unix, con la idea de que todo podía tratarse como un archivo, incluso dispositivos físicos. Por ejemplo, se crearon archivos especiales para la consola (console), los terminales (tty*, del inglés teletype), las impresoras (lp*, del inglés line printer) y un dispositivo nulo (null). Todos los archivos especiales se guardaban en el directorio /dev (del inglés device, dispositivo), y así se sigue haciendo en otros sistemas operativos derivados de Unix, como todos los basados en Linux.

Gary Kildall quiso implementar esta idea en CP/M. El problema es que este sistema operativo estaba diseñado para ordenadores de 8 bits sin disco duro y con poca memoria, por lo que no soportaba directorios, así que los archivos especiales estaban ocultos en cada disquete (de 8 pulgadas en aquella época) que se introducía. Eran los siguientes:

  • CON:. Consola.
  • AUX:. Dispositivo auxiliar. En CP/M 1 y 2 se usaron PUN: (paper tape punch – perforador de cinta de papel) y RDR: (paper tape reader – lector de cinta de papel) en lugar de AUX:.
  • LST:. Impresora.
  • PRN:. Impresora con líneas numeradas.
  • NUL:. Dispositivo nulo.
  • EOF:. Dispositivo de entrada que producía caracteres EOF (end of file – fin de archivo), código 0x1A de ASCII.
  • INP:. Dispositivo de entrada a definir, por defecto el mismo que EOF:.
  • OUT:. Dispositivo de salida a definir, por defecto el mismo que NUL:.

Estos nombres estaban reservados con todas las extensiones posibles, es decir, que no podías crear un CON.DAT o un LST.TXT. Esto era porque algunos programas añadían automáticamente la extensión al nombre del archivo, así, si querías imprimir, ponías LST como nombre de archivo, y aunque el programa añadiera la extensión, lo imprimía igual.

En 1980, Tim Paterson programó QDOS (Quick and Dirty Operating System), que tomaba muchas características de CP/M, entre ellas los archivos especiales (en adelante «dispositivos»). Este sistema operativo fue comprado por Microsoft por 50 000 dólares y renombrado PC-DOS para el IBM PC, y más tarde MS-DOS para ordenadores compatibles.

La versión 2.0 de MS-DOS/PC-DOS incluía soporte para directorios, pero Microsoft decidió mantener la compatibilidad haciendo que los archivos de dispositivo estuvieran en cualquier directorio. Esto podía aprovecharse en un archivo por lotes .BAT para comprobar la existencia de un directorio escribiendo IF EXIST C:\DIR\NUL <orden>.

La compatibilidad con los dispositivos se mantuvo en Windows 95, 98 y ME, basados en MS-DOS. Un truco conocido para provocar un pantallazo azul era escribir C:\CON\CON en la ventana Ejecutar.

También se mantuvo en los sistemas Windows basados en NT, incluyendo Windows XP y siguientes. Estos son los nombres de archivo que no se pueden utilizar actualmente en Windows, ni siquiera con extensión:

  • CON (consola)
  • PRN (impresora)
  • AUX (auxiliar)
  • NUL (nulo)
  • COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 (puertos serie)
  • LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 (puertos paralelos)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.