Apple DOS es el sistema operativo de disco para los ordenadores Apple II desde finales de 1978 hasta principios de 1983. Fue reemplazado por ProDOS en 1983. Apple DOS tiene tres versiones principales: DOS 3.1, DOS 3.2 y DOS 3.3; cada una de estas tres versiones fue seguida por una segunda versión menor de "corrección de errores", pero sólo en el caso de Apple DOS 3.2 esa versión menor recibió su propio número de versión, Apple DOS 3.2.1. La versión más conocida y más utilizada es Apple DOS 3.3 en las versiones de 1980 y 1983. Antes del lanzamiento de Apple DOS 3.1, los usuarios de Apple tenían que depender de cintas de audio para el almacenamiento y la recuperación de datos.
Cuando Apple Computer presentó el Apple II en abril de 1977, el nuevo ordenador no tenía unidad de disco ni sistema operativo de disco (DOS). Aunque el cofundador de Apple, Steve Wozniak, diseñó el controlador Disk II a finales de ese año y creía que podría haber escrito un DOS, su cofundador Steve Jobs decidió externalizar la tarea. La empresa consideró utilizar el CP/M de Digital Research , pero Wozniak buscaba un sistema operativo que fuera más fácil de usar. El 10 de abril de 1978, Apple firmó un contrato de 13.000 dólares con Shepardson Microsystems para escribir un DOS y entregarlo en un plazo de 35 días. Apple proporcionó especificaciones detalladas y el primer empleado de Apple, Randy Wigginton, trabajó en estrecha colaboración con Paul Laughton de Shepardson mientras este último escribía el sistema operativo con tarjetas perforadas y un miniordenador . [2]
No existía Apple DOS 1 ni 2. Las versiones 0.1 a 2.8 fueron revisiones enumeradas en serie durante el desarrollo, que bien podrían haberse llamado compilaciones 1 a 28. Apple DOS 3.0, una versión renombrada de la versión 2.8, nunca se lanzó públicamente debido a errores. Apple no publicó documentación oficial hasta la versión 3.2. [3] [4]
Apple DOS 3.1 se lanzó al público en junio de 1978, poco más de un año después de la presentación del Apple II, convirtiéndose en el primer sistema operativo basado en disco para cualquier computadora Apple. Más tarde se lanzó una versión de corrección de errores que solucionaba un problema mediante su MASTER CREATE
utilidad, que se utilizaba para crear discos maestros (arrancables) de Apple DOS: el comando integrado INIT
creaba discos que solo se podían arrancar en máquinas con al menos la misma cantidad de memoria que la que los había creado. MASTER CREATE
incluye una versión de DOS que se reubica automáticamente y que arranca en equipos Apple con cualquier configuración de memoria.
Apple DOS 3.2 se lanzó en 1979 para reflejar los cambios en los métodos de arranque de las computadoras que se incorporaron al sucesor del Apple II, el Apple II Plus. El nuevo firmware incluía una función de inicio automático que encontraba automáticamente un controlador de disco y arrancaba desde él cuando se encendía el sistema, lo que le valió el nombre de " ROM de inicio automático ". [ cita requerida ] Luego, DOS 3.2.1 se lanzó en julio de 1979 con algunas correcciones de errores menores. [5]
Apple DOS 3.3 se lanzó en 1980. Mejora varias funciones [ ¿cuáles? ] de la versión 3.2, al tiempo que permite grandes ganancias en el almacenamiento disponible en disquetes . Las nuevas PROM P5A/P6A en el controlador de disco permiten la lectura y escritura de datos a una mayor densidad, por lo que se pueden almacenar 16 sectores (4 KiB) por pista en lugar de 13 sectores (3,25 KiB ), lo que aumenta la capacidad de 113,75 KB a 140 KB por lado, de los cuales 16 KB se utilizan para la sobrecarga del sistema de archivos y una copia de DOS, dejando 124 KB para programas y datos de usuario. Sin embargo, DOS 3.3 no es compatible con versiones anteriores ; no puede leer ni escribir discos de DOS 3.2. Para solucionar este problema, Apple Computer lanzó "MUFFIN", una utilidad para migrar archivos y programas de Apple DOS 3.2 a discos de la versión 3.3. Apple nunca ofreció una utilidad para copiar en la otra dirección. Para migrar los archivos de Apple DOS 3.3 a los discos de la versión 3.2, alguien escribió una utilidad "NIFFUM". También existen utilidades comerciales (como Copy II Plus ) que pueden copiar archivos entre ambos formatos (y eventualmente también entre ProDOS ). La versión 3.3 también mejora la capacidad de cambiar entre Integer BASIC y Applesoft BASIC, si el equipo tiene una tarjeta de idioma (expansión de RAM ) o una tarjeta de firmware.
Los discos Apple DOS 3.1 utilizan 13 sectores de datos por pista, cada sector de 256 bytes . Utiliza 35 pistas por lado del disco y puede acceder solo a un lado del disquete, a menos que el usuario dé vuelta el disco . Esto le da al usuario una capacidad de almacenamiento total de 113,75 KB por lado, de los cuales aproximadamente 10 KB se utilizan para almacenar el propio DOS y el directorio del disco, dejando aproximadamente 100 KB para los programas del usuario.
La primera capa del sistema operativo se llama RWTS, que significa "sector de pista de lectura/escritura". Esta capa consta de subrutinas para la búsqueda de pistas, la lectura y escritura de sectores y el formateo del disco. Sobre esta capa se construyó una API llamada Administrador de archivos, que implementa funciones para abrir, cerrar, leer, escribir, eliminar, bloquear (es decir, proteger contra escritura ), desbloquear (es decir, habilitar la escritura) y cambiar el nombre de los archivos, y para verificar la integridad estructural de un archivo. También hay una CATALOG
función para listar archivos en el disquete y una INIT
función que formatea un disco para su uso con DOS, almacenando una copia de DOS en las primeras tres pistas y almacenando un programa de inicio (normalmente llamado HELLO) que se inicia automáticamente cuando se arranca este disco. Sobre la API del Administrador de archivos se implementan las principales rutinas de DOS que se conectan al intérprete BASIC de la máquina e interceptan todos los comandos del disco. Proporciona BLOAD , BSAVE y BRUN para almacenar, cargar y ejecutar ejecutables binarios . LOAD
, RUN
, y SAVE
se proporcionan para programas BASIC, y EXEC
se proporcionó un para ejecutar archivos por lotes basados en texto que constan de comandos BASIC y DOS. Finalmente, existen cuatro tipos de archivos, identificados por letras en un listado de catálogo:
Existen cuatro tipos de archivos adicionales: "R", "S" y un "A" y un "B" adicionales, ninguno de los cuales es totalmente compatible. DOS reconoce estos tipos solo para listados de catálogos y no existen formas directas de manipular estos tipos de archivos. El tipo "R" encontró algún uso para archivos ejecutables binarios reubicables . Algunos programas admiten el tipo "S" como archivos de datos.
Una tabla de vectores de llamadas en la región de $03D0–03FF 16 permite que los programas encuentren DOS donde sea que esté cargado en la memoria del sistema. Por ejemplo, si el DOS conectado a la CLI de BASIC deja de funcionar, se puede reiniciar llamando a la ubicación $03D0 16 (976 10 ) – de ahí el comando tradicional 3D0G
("3D0 go") para regresar a BASIC desde el Monitor del sistema .
El proceso de carga de Apple DOS involucra una serie de programas muy pequeños, cada uno de los cuales lleva el proceso de carga unos pocos pasos hacia adelante antes de pasar el control al siguiente programa en la cadena.
PR#6
(desde BASIC). Cuando el monitor o el BASIC emitían el siguiente carácter de mensaje, el ordenador llamaba a las rutinas de ROM en la tarjeta de disco para que "imprimieran" en ella, que luego continuaría con la secuencia de arranque. (Se podría usar la redirección de entrada para fines similares). Alternativamente, desde el monitor ML, el usuario podía invocar el código de arranque del controlador directamente con un comando como C600G
.El Apple II original incluía un intérprete BASIC en la ROM conocido originalmente como Apple BASIC y más tarde como Integer BASIC . Las variables en este lenguaje solo pueden manejar números enteros que van desde −32,768 a +32,767 ( valores binarios de 16 bits ); no se admiten números de punto flotante . Apple encargó a Microsoft que desarrollara Applesoft BASIC , [6] capaz de manejar números de punto flotante. Applesoft BASIC no puede ejecutar programas Integer BASIC, lo que hace que algunos usuarios se resistan a actualizarlo.
DOS 3.3 se lanzó cuando Applesoft BASIC era estándar en la ROM del Apple II Plus, por lo que Apple lo diseñó para que admitiera el cambio entre los dos intérpretes de BASIC. El BASIC entero se carga en la RAM en la tarjeta de idioma del Apple II (si está presente) y, al escribir FP
o INT
desde BASIC, el usuario puede cambiar entre cualquiera de las versiones.
Después de 1980, Apple DOS entró en un estado de estancamiento, ya que Apple concentró sus esfuerzos en el malogrado ordenador Apple III y su sistema operativo SOS . A principios y mediados de 1983 se lanzaron dos versiones más de Apple DOS, ambas todavía llamadas DOS 3.3, pero con algunas correcciones de errores y mejor compatibilidad con el nuevo modelo Apple IIe .
Sin parches de terceros , Apple DOS sólo puede leer disquetes que se ejecutan en una unidad Disk II de 5,25 pulgadas y no puede acceder a ningún otro medio, como unidades de disco duro, unidades de RAM virtuales o unidades de disquete de 3,5 pulgadas . La estructura de los discos de Apple DOS (en particular el mapa de sectores libres, que estaba restringido a parte de un solo sector) es tal que no es posible tener más de 400 KB disponibles a la vez por unidad sin una reescritura importante de casi todas las secciones del código; esta es la razón principal por la que Apple abandonó esta iteración de DOS en 1983, cuando Apple DOS fue reemplazado por completo por ProDOS .
ProDOS conserva el formato de bajo nivel de 16 sectores de DOS 3.3 para discos de 5,25 pulgadas, pero introduce un nuevo formato de alto nivel que es adecuado para dispositivos de hasta 32 MB ; esto lo hace adecuado para discos duros de esa era y disquetes de 3,5 pulgadas . Todos los ordenadores Apple desde el II Plus en adelante pueden ejecutar tanto DOS 3.3 como ProDOS, requiriendo el Plus una expansión de memoria "Tarjeta de idioma" para usar ProDOS; los modelos e y posteriores tienen hardware de Tarjeta de idioma incorporado, por lo que pueden ejecutar ProDOS directamente. ProDOS incluye software para copiar archivos desde discos Apple DOS. Sin embargo, muchas personas que no necesitaban las mejoras de ProDOS (y a quienes no les gustaba su mayor consumo de memoria ) continuaron usando Apple DOS o uno de sus clones mucho después de 1983. La convención de Apple de almacenar un sistema operativo de arranque en cada disquete significa que se puede usar software comercial sin importar el sistema operativo que tenga el usuario. Un programa llamado DOS.MASTER permite a los usuarios tener múltiples particiones virtuales DOS 3.3 en un volumen ProDOS más grande, lo que permite el uso de muchos programas DOS basados en disquetes con un disco duro.
Poco después de que saliera ProDOS, Apple retiró el permiso a terceros para redistribuir DOS 3.3, pero otorgó a una empresa, Syndicomm, una licencia exclusiva para revender DOS 3.3. [7]
Los juegos comerciales generalmente no usaban Apple DOS, sino que tenían sus propias rutinas de disco personalizadas para fines de protección de copia y también para mejorar el rendimiento.
La rutina RWTS de DOS puede leer o escribir una pista en dos revoluciones con el intercalado adecuado . Un sector del disco giratorio pasa por debajo del cabezal de lectura/escritura mientras la rutina RWTS está decodificando el sector recién leído (o codificando el siguiente que se va a escribir), y si este sector que falta es el siguiente que se necesita, DOS necesita esperar casi una revolución completa del disco para que el sector vuelva a aparecer. Esto se llama "revolucionar" y es un cuello de botella de rendimiento bien conocido en los sistemas de disco. Para evitarlo, los sectores de un disco DOS se organizan en un orden intercalado: [8]
0 7 e 6 d 5 c 4 b 3 a 2 9 1 8 f
Posteriormente, ProDOS organizó los sectores en este orden: [8]
0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f
Al leer y decodificar el sector 0, pasa el sector 8, de modo que el sector 1, el siguiente sector que probablemente se necesitará, estará disponible sin necesidad de esperar. Al leer el sector 7, pasan dos sectores innecesarios, f y 0, antes de que el sector 8 esté disponible, y al leer el sector 15, la unidad siempre tendrá que esperar una revolución adicional para el sector 0 en la misma pista. Sin embargo, el sector 0 realmente necesario en la mayoría de los casos estará en la pista inmediatamente superior, y esa pista se puede organizar en relación con la última para permitir el tiempo necesario para decodificar el sector recién leído y mover el cabezal antes de que llegue el sector 0. En promedio, se puede leer una pista completa en dos revoluciones del disco.
El primer administrador de archivos DOS subvirtió esta eficiencia al copiar bytes leídos o escritos en un archivo uno a la vez entre un búfer de disco y la memoria principal, lo que requiere más tiempo y da como resultado que DOS supere constantemente las revoluciones al leer o escribir archivos. [9] Pronto estuvieron disponibles programas para formatear discos con intercalaciones de sectores modificadas; estos discos le dan a DOS más tiempo entre sectores para copiar los datos, lo que mejora el problema.
Más tarde, los programadores externos a Apple reescribieron las rutinas del Administrador de archivos para evitar realizar una copia adicional de la mayoría de los sectores de un archivo; se le indicó a RWTS que leyera o escribiera sectores directamente hacia o desde la memoria principal en lugar de hacerlo desde un búfer de disco cuando se debía transferir un sector completo. Un parche temprano para proporcionar esta funcionalidad se publicó en Call-APPLE . Las aceleraciones en el LOAD
comando de tres a cinco veces eran típicas.
Esta funcionalidad apareció pronto en productos comerciales, como Pronto-DOS, Diversi-DOS, Hyper-DOS y David-DOS, junto con funciones adicionales, pero nunca se utilizó en una versión oficial de DOS de Apple. Sin embargo, una funcionalidad similar fue empleada por el sistema operativo sucesor de Apple, ProDOS. El sistema operativo específico de Apple IIGS, GS/OS, eventualmente emplearía una técnica de "lectura dispersa" aún más eficiente que leería cualquier sector que pasara por debajo del cabezal de lectura si fuera necesario para el archivo que se estaba leyendo.
En 2013, más de 35 años después del debut del Apple II , el código fuente original de Apple DOS fue publicado por el Museo de Historia de la Computación en su sitio web. [10] Fue donado por el autor original, Paul Laughton. [11]