Articulo de referencia

Apple DOS

Apple DOS es el sistema operativo de disco para las computadoras Apple II desde finales de 1978 hasta principios de 1983. Fue reemplazado por ProDOS en 1983. Apple DOS tiene tre...

Apple DOS es el sistema operativo de disco para las computadoras 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; [ 2 ] cada una de estas tres versiones fue seguida por una segunda versión menor de "corrección de errores", pero solo 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 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 casete de audio para el almacenamiento y la recuperación de datos.

Historial de versiones

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 compañero Steve Jobs decidió subcontratar la tarea. La empresa consideró usar CP/M de Digital Research , pero Wozniak buscaba un sistema operativo 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 35 días. Apple proporcionó especificaciones detalladas, y el primer empleado de Apple, Randy Wigginton, trabajó estrechamente con Paul Laughton de Shepardson mientras este último escribía el sistema operativo con tarjetas perforadas y un miniordenador . [ 3 ]

No existió Apple DOS 1 ni 2. Las versiones 0.1 a 2.8 fueron revisiones numeradas secuencialmente durante el desarrollo, que bien podrían haberse llamado compilaciones 1 a 28. Apple DOS 3.0, una versión renombrada de la 2.8, nunca se lanzó públicamente debido a errores. Apple no publicó documentación oficial hasta el lanzamiento de la versión 3.2. [ 4 ] [ 5 ] [ 2 ]

Apple DOS 3.1 se lanzó públicamente 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. Posteriormente se lanzó una versión de corrección de errores que solucionaba un problema mediante su MASTER CREATEutilidad, la cual se utilizaba para crear discos maestros (de arranque) de Apple DOS: el comando integrado INITcreaba discos que solo podían arrancar en máquinas con al menos la misma cantidad de memoria que la que los había creado. MASTER CREATEIncluye una versión de DOS con reubicación automática que arranca en Apples con cualquier configuración de memoria.

Apple DOS 3.2 se lanzó en 1979 [ 6 ] 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 arranque automático que detectaba automáticamente un controlador de disco y arrancaba desde él al encender el sistema , lo que le valió el nombre de " ROM de arranque automático ". Posteriormente, en julio de 1979, se lanzó DOS 3.2.1 con algunas correcciones de errores menores. [ 5 ] [ 6 ]

Apple DOS 3.3 se lanzó en 1980. Mejora varias funciones de la versión 3.2, incluyendo una reescritura del RWTS para hacerlo más rápido, [ 6 ] a la vez 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 densidad más alta, por lo que se pueden almacenar 16 sectores (4 KiB) por pista en lugar de 13 sectores (3,25 KiB ), aumentando la capacidad de 113,75 KB a 140 KB por lado , de los cuales 16 KB son utilizados por 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 retrocompatible ; no puede leer ni escribir discos 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 sentido inverso. Para migrar archivos de Apple DOS 3.3 a disquetes de la versión 3.2, se creó una utilidad llamada "NIFFUM". También existen utilidades comerciales (como Copy II Plus ) que permiten copiar archivos entre ambos formatos (y eventualmente también ProDOS ). La versión 3.3 mejora además la capacidad de alternar entre Integer BASIC y Applesoft BASIC, si el ordenador dispone de una tarjeta de idioma ( expansión de RAM ) o una tarjeta de firmware.       

Detalles técnicos

Los disquetes de Apple DOS 3.1 utilizan 13 sectores de datos por pista, cada sector de 256 bytes . Utilizan 35 pistas por cara del disco y solo pueden acceder a una cara, a menos que el usuario le dé la vuelta . Esto proporciona al usuario una capacidad de almacenamiento total de 113,75  KB por cara, de los cuales unos 10  KB se utilizan para almacenar el propio DOS y el directorio del disco, dejando unos 100  KB para los programas del usuario.

La primera capa del sistema operativo se llama RWTS, que significa "read/write track sector" (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 escritura) y renombrar archivos, y para verificar la integridad estructural de un archivo. También hay una CATALOGfunción para listar los archivos en el disquete y una INITfunción que formatea un disco para su uso con DOS, almacenando una copia de DOS en las tres primeras pistas y almacenando un programa de inicio (generalmente llamado HELLO) que se inicia automáticamente cuando se arranca desde este disco. Sobre la API del Administrador de archivos, se implementan las rutinas principales 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 SAVEse proporcionan para programas BASIC, y se proporcionó un para ejecutar archivos por lotesEXEC basados ​​en texto que consisten en comandos BASIC y DOS. Finalmente, existen cuatro tipos de archivos, identificados por letras en una lista de catálogo: [ 7 ]

Existen cuatro tipos de archivo adicionales: "R", "S" y los tipos "A" y "B", ninguno de los cuales cuenta con soporte completo. DOS solo reconoce estos tipos para listados de catálogo, y no existen formas directas de manipularlos. El tipo "R" se utilizó para archivos ejecutables binarios reubicables . Algunos programas admiten el tipo "S" como archivos de datos.

Una tabla de vectores de llamada en la región $03D0–03FF 16 permite a los programas encontrar DOS dondequiera que esté cargado en la memoria del sistema. Por ejemplo, si el DOS conectado a la CLI de BASIC deja de funcionar, se puede reinicializar llamando a la ubicación $03D0 16 (976 10 ) de ahí el comando tradicional ("3D0 go") para volver a BASIC desde el Monitor del Sistema . 3D0G

Cargador de arranque

El proceso de carga de Apple DOS implica una serie de programas muy pequeños, cada uno de los cuales lleva el proceso de carga unos pasos más adelante antes de pasar el control al siguiente programa de la cadena.

  • Originalmente, la ROM del Apple II no admitía el arranque desde disco. Al encenderse, mostraba el indicador del Monitor del Sistema. Tanto el Monitor como Integer BASIC tienen comandos para redirigir la impresión a un controlador de impresora en una ranura designada, por lo que la forma convencional de arrancar desde disco era ordenar al ordenador que comenzara a "imprimir" en la tarjeta de interfaz de disco, normalmente instalada en la ranura 6, usando el comando 6 Control-P(desde el monitor ML) o PR#6(desde BASIC). Cuando el monitor o BASIC emitía el siguiente carácter del indicador, el ordenador llamaba a las rutinas ROM en la tarjeta de disco para "imprimir" en ella, lo que luego procedía con la secuencia de arranque. (Se podí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.
  • Cuando se presentó el Apple II Plus, incluía la capacidad de escanear cada ranura de expansión (desde la ranura 7 hasta la ranura 1) en busca de una ROM de tarjeta de expansión de arranque y llamarla automáticamente.
  • El código de arranque de la ROM de la tarjeta de expansión intenta arrancar desde la unidad 1 del controlador moviendo el brazo de lectura/escritura a la pista cero e intentando leer 256 bytes del sector cero de dicha pista. (Si no hay ningún disco legible disponible, la unidad gira indefinidamente hasta que se encuentre uno y se cierre la puerta de la unidad).
  • El sector cero contiene un pequeño programa que le indica a la computadora que lea los sectores del 0 al 9 de la pista cero en la memoria utilizando parte del código de arranque de la ROM (releyendo el sector 0 en el proceso).
  • El programa en los sectores 1 a 9 de la pista 0, incluido el código RWTS completo, procede luego a cargar las pistas 1 y 2, que contienen el resto de DOS. En un disco maestro del sistema, también se incluye código para determinar la configuración de la RAM de la computadora y reubicar DOS lo más arriba posible en la memoria del sistema, hasta el  límite de 48 KB de la memoria principal del Apple II ($BFFF 16 ).
  • Una vez que DOS se carga en la memoria, intenta cargar y ejecutar un programa de inicio, tal como se indica en el código del programa. Generalmente, se trata de un programa en lenguaje BASIC llamado HELLO (o con otro nombre), pero DOS puede modificarse para ejecutar otros tipos de programas al inicio, como un archivo binario ejecutable. La aparición del corchete derecho ( ] ) en la pantalla indica al usuario que se está cargando un programa de inicio de Applesoft BASIC, mientras que el símbolo de mayor que ( > ) indica que se está cargando un programa Integer BASIC. (Estos son los mensajes de las respectivas versiones de BASIC, que se están inicializando en este punto).
  • A continuación, comienza la ejecución del programa de inicio.

Compatibilidad con Integer BASIC y Applesoft BASIC

El Apple II original incluía un intérprete BASIC en la ROM, conocido inicialmente como Apple BASIC y posteriormente como Integer BASIC . Las variables en este lenguaje solo pueden manejar números enteros que van desde -32.768 hasta +32.767 ( valores binarios de 16 bits ); no admite números de coma flotante . Apple encargó a Microsoft el desarrollo de Applesoft BASIC , [ 8 ] capaz de manejar números de coma flotante. Applesoft BASIC no puede ejecutar programas de Integer BASIC, lo que provoca que algunos usuarios se resistan a actualizar a este lenguaje.

DOS 3.3 se lanzó cuando Applesoft BASIC era el estándar en la ROM del Apple II Plus, por lo que Apple lo diseñó para admitir el cambio entre los dos intérpretes de BASIC. Integer BASIC se carga en la RAM de la tarjeta de lenguaje de los Apple II (si está presente) y, escribiendo FPo INTdesde BASIC, el usuario puede cambiar entre cualquiera de las dos versiones.

Rechazar

Después de 1980, Apple DOS entró en un estado de estancamiento, ya que Apple concentró sus esfuerzos en la desafortunada computadora Apple III y su sistema operativo SOS . Dos versiones más de Apple DOS, ambas aún llamadas DOS 3.3 pero con algunas correcciones de errores y mejor compatibilidad con el nuevo modelo Apple IIe , fueron lanzadas a principios y mediados de 1983.

Sin parches de terceros , Apple DOS solo puede leer disquetes instalados en una unidad Disk II de 5,25 pulgadas y no puede acceder a ningún otro medio, como discos duros, unidades de RAM virtual 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 una 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 versió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  disquetes de 5,25 pulgadas, pero introduce un nuevo formato de alto nivel adecuado para dispositivos de hasta 32 MB ; esto lo hace compatible con discos duros de esa época y disquetes de 3,5 pulgadas . Todos los ordenadores Apple desde el II Plus en adelante pueden ejecutar tanto DOS 3.3 como ProDOS; el Plus requiere una expansión de memoria "Language Card" para usar ProDOS; los modelos e y posteriores tienen hardware Language Card integrado, por lo que pueden ejecutar ProDOS directamente. ProDOS incluye software para copiar archivos desde disquetes 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 independientemente del sistema operativo que posea el usuario. Un programa llamado DOS.MASTER permite a los usuarios tener múltiples particiones virtuales de DOS 3.3 en un volumen ProDOS más grande, lo que posibilita 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. [ 9 ]

Los juegos comerciales generalmente no utilizaban Apple DOS, sino que contaban con sus propias rutinas de disco personalizadas para la protección contra copias , así como para mejorar el rendimiento.

Mejoras en el rendimiento

La rutina RWTS de DOS puede leer o escribir una pista en dos revoluciones con el entrelazado adecuado . Un sector del disco giratorio pasa por debajo del cabezal de lectura/escritura mientras la rutina RWTS decodifica el sector recién leído (o codifica el siguiente que se va a escribir), y si este sector omitido es el siguiente que se necesita, DOS tiene que esperar casi una revolución completa del disco para que el sector vuelva a pasar. Esto se llama "perder una revolución" y es un cuello de botella de rendimiento bien conocido en los sistemas de disco. Para evitar esto, los sectores en un disco DOS están dispuestos en un orden entrelazado: [ 10 ]

0 7 e 6 d 5 c 4 b 3 a 2 9 1 8 f

Posteriormente, ProDOS organizó los sectores en este orden: [ 10 ]

0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f

Al leer y decodificar el sector 0, el sector 8 pasa rápidamente, de modo que el sector 1, el siguiente sector que probablemente se necesite, estará disponible sin esperas. Al leer el sector 7, dos sectores innecesarios, f y 0, pasan antes de que el sector 8 esté disponible, y al leer el sector 15, la unidad siempre tendrá que esperar una vuelta adicional para el sector 0 en la misma pista. Sin embargo, el sector 0 que realmente se necesita en la mayoría de los casos estará en la pista inmediatamente superior, y esa pista se puede organizar en relación con la anterior 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 vueltas del disco.

El administrador de archivos de DOS primitivo socavaba esta eficiencia al copiar los bytes leídos o escritos en un archivo uno por uno entre un búfer de disco y la memoria principal, lo que requería más tiempo y provocaba que DOS acelerara constantemente al leer o escribir archivos. [ 11 ] Pronto se pusieron a disposición 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, programadores ajenos a Apple reescribieron las rutinas del Administrador de archivos para evitar la copia adicional de la mayoría de los sectores de un archivo; se instruyó a RWTS para que leyera o escribiera sectores directamente en la memoria principal, en lugar de hacerlo desde un búfer de disco, siempre que se transfiriera un sector completo. Un parche inicial para proporcionar esta funcionalidad se publicó en Call-APPLE . Las mejoras de velocidad en el LOADcomando eran de tres a cinco veces.

Esta funcionalidad pronto apareció en productos comerciales como Pronto-DOS, Diversi-DOS, Hyper-DOS y David-DOS, junto con otras características adicionales, pero nunca se utilizó en una versión oficial de Apple DOS. Sin embargo, el sistema operativo sucesor de Apple, ProDOS, empleó una funcionalidad similar. El sistema operativo GS/OS, específico para Apple IIGS , emplearía posteriormente una técnica de "lectura dispersa" aún más eficiente que leía cualquier sector que pasara por debajo del cabezal de lectura si era necesario para el archivo que se estaba leyendo.

Lanzamiento del código fuente

En 2013, más de 35 años después del debut del Apple II , el Museo de Historia de la Computación publicó el código fuente original de Apple DOS en su sitio web. [ 12 ] Fue donado por el autor original, Paul Laughton. [ 13 ]

Véase también

Referencias

  1. Apple II DOS - Código fuente
  2. 1 2 Worth y Lechner (1981) , págs. 2–1, 2–2, 2–3.
  3. Terdiman, Daniel (3 de abril de 2013). "La historia no contada detrás del sistema operativo de Apple de 13.000 dólares" . CNET . Consultado el 4 de abril de 2013 .
  4. "Apple Computer" . Laughton.com . Consultado el 14 de junio de 2013 .
  5. 1 2 "Historia del Apple II » 14-DOS" . Apple2History.org . Archivado del original el 10 de julio de 2010. Consultado el 14 de junio de 2013 . 
  6. 1 2 3 Worth y Lechner (1981) , pág. 2-2.
  7. Apple Computer (1983) , pág. 16.
  8. Steven Weyhrich. "Historia del Apple II, Capítulo 16" . Archivado del original el 29 de enero de 2009. Consultado el 26 de enero de 2009 .
  9. Dean Esmay (18 de noviembre de 2010). "Incluso Apple usó herramientas piratas" . Archivado del original el 25 de julio de 2011. Recuperado el 11 de agosto de 2011 .
  10. 1 2 "Acerca de los formatos de archivo" . Consultado el 26 de abril de 2012 .
  11. ^ DOS 3.3, ProDOS y más allá v1.3 bala 07 de julio 01
  12. Shustek, Len (12 de noviembre de 2013). "Código fuente de Apple II DOS" . ComputerHistory.org . Consultado el 30 de noviembre de 2013 .
  13. "El sistema operativo de Apple II, con 35 años de antigüedad, ya está disponible para el público" . 13 de noviembre de 2013.

Lecturas adicionales

  • Worth, Don; Lechner, Pieter (1981), Beneath Apple DOS , Quality Software, ISBN 0-912985-00-3
  • Apple Computer (1983). Apple // Manual del usuario de DOS .
  • Relato de Paul Laughton sobre la escritura de DOS 3.1
  • Historia del Apple II: DOS
  • A2Central.com Archivado el 26/06/2009 en Wayback Machine - Noticias y descargas de Apple II
  • Artículo DOS 3.1 de Everything2.com
  • Código fuente de Apple II DOS versión 3.1 (1978, publicado en 2013 con el permiso de Apple Inc.)