# MS-DOS

MS-DOS (siglas de Microsoft Disk Operating System, Sistema operativo de disco de Microsoft o Microsoft DOS) fue el miembro más popularmente conocido de la familia de sistemas operativos DOS de Microsoft, y el principal sistema operativo para computadoras personales compatible con IBM PC en la década de 1980 y mediados de años 1990, hasta que fue sustituida gradualmente en la versión 8.0 del año 2000 por sistemas operativos que ofrecían una interfaz gráfica de usuario, en particular por varias generaciones de Microsoft Windows. Desde Windows XP, ya no se volvió a incluir una versión de MS-DOS y fue reemplazado por CMD.
MS-DOS nació en 1980 al encargársele a Microsoft producir un sistema operativo para la gama de computadoras personales IBM PC de IBM. En este momento, Microsoft compró los derechos de QDOS, Quick Disk Operating System, también conocido como 86-DOS, de Seattle Computer Products que fue elaborado por Tim Paterson, y comenzó a trabajar en las modificaciones para poder cumplir con los requisitos de IBM. Se hicieron más de 300 modificaciones al código original y Microsoft tuvo que contratar, puntualmente, al mismísimo Tim Paterson.

## Historia

MS-DOS era una forma renombrada de 86-DOS – propiedad de Seattle Computer Products, escrito por Tim Paterson. El desarrollo de 86-DOS tomó solo seis semanas, ya que era básicamente un clon de CP/M de Digital Research (para procesadores 8080/Z80), adaptado para ejecutarse en procesadores 8086 y con dos diferencias notables en comparación con CP/M: una lógica mejorada de almacenamiento en búfer del sector del disco y la introducción de FAT12 en lugar del sistema de archivos CP/M. Esta primera versión se envió en agosto de 1980. Microsoft, que necesitaba un sistema operativo para el IBM Personal Computer, contrató a Tim Paterson en mayo de 1981 y compró 86-DOS 1.10 por 75 000 dólares estadounidenses en julio del mismo año. Microsoft mantuvo el número de versión, pero lo renombró MS-DOS. Ellos también licenciaron MS-DOS 1.10 /1.14 a IBM, que, en agosto de 1981, lo ofreció como PC DOS 1.0 como uno de los tres sistemas operativos para IBM 5150 o IBM PC.
En un año, Microsoft otorgó licencias de MS-DOS a más de 70 empresas más. Fue diseñado para ser un sistema operativo que pudiera ejecutarse en cualquier ordenador de la familia 8086. Cada ordenador tendría su propio hardware distinto y su propia versión de MS-DOS, similar a la situación que existía para CP/M, y con MS-DOS emulando la misma solución como CP/M para adaptarse a diferentes plataformas de hardware. Con este fin, MS-DOS fue diseñado con una estructura modular con controladores de dispositivos internos (el DOS BIOS), mínimamente para las unidades de disco primarias y la consola, integrado con el kernel y cargado por el gestor de arranque, y controladores de dispositivo instalables para otros dispositivos cargados e integrados en el momento del arranque. El OEM utilizaría un kit de desarrollo proporcionado por Microsoft para crear una versión de MS-DOS con sus controladores de E/S básicos y un kernel estándar de Microsoft, que normalmente proporcionarían en disco a los usuarios finales junto con el hardware. Por lo tanto, hubo muchas versiones diferentes de "MS-DOS" para diferentes hardware, y existe una distinción importante entre una máquina compatible con IBM (o ISA) y una máquina [compatible] con MS-DOS. Algunas máquinas, como la Tandy 2000, eran compatibles con MS-DOS pero no con IBM, por lo que podían ejecutar software escrito exclusivamente para MS-DOS sin depender del hardware periférico de la arquitectura de PC de IBM.
Este diseño habría funcionado bien para la compatibilidad, si los programas de aplicación solo hubieran usado los servicios de MS-DOS para realizar la E/S del dispositivo y, de hecho, la misma filosofía de diseño está incorporada en Windows NT (véase capa de abstracción de hardware). Sin embargo, en los primeros días de MS-DOS, la mayor velocidad alcanzada por los programas a través del control directo del hardware era de particular importancia, especialmente para los juegos, que a menudo superaban los límites de su hardware contemporáneo. Muy pronto, una arquitectura compatible con IBM se convirtió en el objetivo, y en poco tiempo todos los ordenadores de la familia 8086 emulaban de cerca el hardware de IBM, y solo una única versión necesitaba MS-DOS para una plataforma de hardware fijo para el mercado. Esta versión es la versión de MS-DOS que se analiza aquí, ya que las docenas de otras versiones OEM de "MS-DOS" solo eran relevantes para los sistemas para los que fueron diseñadas y, en cualquier caso, eran muy similares en función y capacidad a alguna versión estándar para la PC de IBM, a menudo la versión con el mismo número, pero no siempre, ya que algunos OEM utilizaron sus propios esquemas de numeración de versiones (por ejemplo, etiquetando versiones posteriores de MS-DOS 1.x como 2.0 o viceversa), con un pocas excepciones notables.
Microsoft omitió el soporte multiusuario de MS-DOS porque el sistema operativo basado en Unix de Microsoft, Xenix, era totalmente multiusuario. La empresa planeó, con el tiempo, mejorar MS-DOS para que fuera casi indistinguible de Xenix de un solo usuario, o XEDOS, que también funcionaría en Motorola 68000, Zilog Z8000, y el LSI-11; serían compatibles hacia arriba con Xenix, que Byte en 1983 describió como "el MS-DOS multiusuario del futuro". Microsoft anunció MS-DOS y Xenix juntos, enumerando las características compartidas de su "sistema operativo de usuario único" y "el sistema operativo multiusuario, multitarea, UNIX derivado del sistema operativo", y prometiendo una fácil portabilidad entre ellos. Sin embargo, después de la desintegración de Bell System, AT&T Computer Systems comenzó a vender UNIX System V. Creyendo que no podía competir con AT&T en el mercado de Unix, Microsoft abandonó Xenix y en 1987 transfirió la propiedad de Xenix a la Santa Cruz Operation (SCO).
El 25 de marzo de 2014, Microsoft puso a disposición del público el código SCP MS-DOS 1.25 y una mezcla de Altos MS-DOS 2.11 y TeleVideo PC DOS 2.11 bajo el Acuerdo de licencia de investigación de Microsoft, que hace que el código sea fuente disponible, pero no código abierto según lo definido por las normas de Open Source Initiative o Free Software Foundation. Posteriormente, Microsoft volvería a licenciar el código bajo la Licencia MIT el 28 de septiembre de 2018, haciendo que estas versiones sean software gratuito.
Como broma del Día de los Inocentes en 2015, Microsoft Mobile lanzó una aplicación Windows Phone llamada MS-DOS Mobile que se presentó como un nuevo sistema operativo móvil y funcionaba de manera similar a MS-DOS.

### Versiones

MS-DOS no fue un Sistema Operativo hecho desde cero, se desarrolló a partir de QDOS, Quick Disk Operating System, también conocido como 86-DOS. Su desarrollo se inició oficialmente en 1981 y fue lanzado en 1982 como MS-DOS 1.0. Tuvo ocho versiones principales y alcanzó gran difusión, pero fue gradualmente reemplazado por S.S.O.O. que ofrecían una interfaz gráfica de usuario (GUI), en particular, por varias generaciones del sistema operativo Microsoft Windows.
* MS-DOS 1.0 (1981)
* MS-DOS 1.1 (1982)
* MS-DOS 1.25 (1982)
* MS-DOS 2.0 (1983)
* MS-DOS 3.0 (1984)
* MS-DOS 3.30 (1987)
* MS-DOS 4.0 (1988)
* MS-DOS 5.0 (1991)
* MS-DOS 5.2 (1992)
* MS-DOS 6.0 (1993)
* MS-DOS 6.22 (1994)
* MS-DOS 7.0 (1995)
* MS-DOS 8.0 (2000)

### Código fuente

El código fuente del MS-DOS 1.1 (1982) y 2.0 (1983), junto con el de Word para Windows 1.1 (1989) fue publicado por Microsoft el 25 de marzo de 2015.Posteriormente se publicaría el código fuente de MS-DOS 4.0 (1986) el 25 de abril de 2024.

## Características

Como su nombre "Sistema Operativo en Disco" indica MS-DOS se instala en el disco duro de computadora IBM o Pc compatible, sin embargo MS-DOS es capaz de estar esta completamente listo en segundos; diferente al Macintosh de Apple, Commodore AMIGA y sistemas UNIX de la misma época. El Macintosh y AMIGA tardaban hasta un minuto en iniciar porque requerían iniciar su sistema operativo en RAM desde un disquete, proceso denominado "Kickstart".
El núcleo lo componen IO.SYS, MSDOS.SYS, y COMMAND.COM. Es posible iniciar DOS únicamente con estos tres archivos, pero la mayoría de comandos y funciones no estarán disponibles. Los nombres de los archivos tenían un máximo de 8 caracteres, un punto y una extensión de como máximo tres letras, en total un máximo de 12 caracteres del Código ASCII que permitían distinguir unos archivos de otros dentro de un mismo directorio. Finalmente en Windows 95, DOS admite mayor número de caracteres. No todos los caracteres del código ASCII estaban permitidos para nombrar un archivo, pues algunos (ejemplo: /*?+\ y otros) estaban reservados para otras funciones. Esta limitación de caracteres reservados sigue vigente en la actualidad.

### Órdenes básicas

Aquí se muestran algunas de las órdenes que utilizaba MS-DOS, y que actualmente pueden ser utilizados desde la línea de comandos en sistemas operativos Windows que es CMD. Para acceder a la ayuda de estas, MS-DOS, a partir de la versión 6.2 permite lo siguiente: comando a consultar /? (Ej.: copy /?).
Pueden ser internos (incluidos dentro del propio COMMAND.COM) o externos (archivos ejecutables en el directorio del MSDOS):

### Comandos internos

Los comandos internos o residentes son aquellos que se transfieren a la memoria en el momento de cargarse el Sistema Operativo y se pueden ejecutar sin necesidad de tener el DOS presente en la unidad por defecto desde el cual se puede ejecutar el mandato. La unidad por defecto es la unidad en la que se está, por ejemplo A:\>_ ; y la unidad especificada es aquella a la cual nos dirigimos o especificamos estando en otra unidad, por ejemplo A:\>B: , la unidad especificada es B.
Estos son algunos comandos internos de MS-DOS:
* CD o CHDIR - Cambia el directorio actual.
* CD.. - Cambia al directorio jerárquicamente superior.
* CLS - Limpia todos los comandos y toda la información que hay en pantalla excepto el incitador de comandos (prompt) usualmente la letra y ruta de la unidad usada (Por ejemplo C:\>)
* COPY - Copiar un archivo de un directorio a otro
* COPY CON Copia a un archivo los caracteres introducidos en pantalla
* DATE - Visualiza o cambia la fecha del sistema.
* DEL - Se usa para eliminar archivos.
* DIR - Lista los directorios y archivos de la unidad o directorio actual.
* FOR - Repite un comando
* PROMPT- Cambia la línea de visualización de la orden.
* MD o MKDIR - Crea un directorio
* RD o RMDIR- Elimina un directorio.
* REM - Permite insertar comentarios en archivos de proceso por lotes.
* REN o RENAME - Renombra archivos y directorios.
* SET - Asigna valores a variables de entorno.
* TIME - Visualiza o cambia la hora del sistema.
* TYPE - Muestra el contenido de un fichero. Se utiliza, principalmente, para ver contenidos de ficheros en formato texto.
* VER - Muestra la versión del Sistema Operativo.
* VOL - Muestra la etiqueta del disco duro y su volumen (si lo tiene)
* BREAK -Activa o desactiva la verificación extendida CTRL+C.
* EDIT -Abre una especie de editor de texto.
* EXIT - Salir

### Comandos externos

Los comandos externos en contraposición con los comandos internos se almacenan en archivos de comandos denominados transitorios o externos, y para ejecutarse necesitan de estos archivos, además los comandos externos tienen nombre propio y se pueden copiar de un disco a otro.
Aquí se muestran algunos de los comandos que utilizaba MS-DOS, y que actualmente pueden ser utilizados desde la línea de comandos en sistemas operativos Windows. Para acceder a la ayuda de estas, MS-DOS, a partir de la versión 6.2 permite lo siguiente: comando a consultar /? (Ej.: dir /?). Pueden ser internos (incluidos dentro del propio COMMAND.COM) o externos (archivos ejecutables en el directorio del MSDOS):
* ATTRIB - Sin parámetros visualiza los atributos de los directorios y archivos. Con parámetros cambia los atributos de directorios y archivos.
Los atributos de los directorios, y los ficheros son: de lectura (r), de escritura (w), de archivo (a), oculto (h), de sistema (s). Parámetros: signos (más o menos) y letras r, w, a, y h "v". Ejemplo: Attrib +r *.* (atributo de solo lectura, para todos los ficheros de ese directorio)
* APPEND - Sirve para especificar trayectorias para ficheros de datos.
* BACKUP - Ejecuta una copia de seguridad de uno o más archivos de un disco duro a un disquete.
* CHKDSK - Verifica si hay errores en el disco duro. (También se puede utilizar para corregirlos con el parámetro "/F")
* DELTREE - Borra un directorio sin importar que contenga subdirectorios con todos sus contenidos.
* DISKCOMP - Tras realizar una copia de disquetes podemos realizar una verificación, para ver si ha copiado todos los contenidos, comparando. Este comando compara discos o disquetes.
* DISKCOPY - Permite hacer una copia idéntica de un disquete a otro, pertenece al grupo de las órdenes externas.
* DOSKEY - Permite mantener residentes en memoria RAM las órdenes que han sido ejecutadas en el punto indicativo.
* FC - Compara ficheros.
* FORMAT - Permite crear la estructura lógica en una unidad física de almacenamiento (discos duros, disquetes y unidades de almacenamiento masivo).
* FORMAT /U - Formatea un disco con formato incondicional reparando errores y marcando sectores defectuosos.
* FORMAT /s - Formatea un disco y lo convierte en disco de sistema.
* PRINT - Permite imprimir ficheros.
Se pueden utilizar estos parámetros combinados.
* KEYB - Establece el idioma del teclado según el parámetro adicionado (Ejemplo: KEYB SP para el teclado español).
* LABEL - Muestra o cambia la etiqueta de la unidad de disco duro.
* MEM - Muestra la memoria RAM, el espacio ocupado y el espacio libre.
* MOVE - Mueve o cambia de posición un directorio y/o ficheros. También renombra subdirectorios.
* SUBST - Crea una unidad lógica virtual a partir de un directorio.
* TREE - Muestra los directorios en forma de árbol.
* XCOPY - Este comando tiene la misma función que su homólogo residente COPY, con la salvedad de que realiza operaciones de copiado de toda la estructura de directorios si se utiliza el carácter comodín *.* y el modificador /s. Es una versión mejorada del anterior.

### Redireccionamientos

* < - Re direccionamiento de la entrada estándar. Su sintaxis es comando < fichero.
* > - Re direccionamiento de la salida estándar. Su sintaxis es comando > fichero. Si el fichero no existe, lo crea. Si ya existía, sobreescribe su contenido.
* >> - Re direccionamiento de la salida estándar a un fichero existente. Su sintaxis es comando >> fichero. Si el fichero no existe, lo crea. Si ya existía, añade el resultado del comando a continuación del contenido previo del fichero.