Apple DOS

En 1977 el ejecutivo e inversor de Apple, Mike Markkula escribió un programa de balance de cuentas. Pero su programa tardaba demasiado tiempo en cargarse desde la unidad de cinta del Apple II, por lo que le pidió al cofundador Steve Wozniak que diseñara un sistema de unidad de disco.

El diseño de un sistema de unidad de discos implicaba dos problemas para Wozniak. Por un lado el diseño del hardware y por otro el software de control, o sistema operativo.

Durante las vacaciones de Navidad de 1977, Steve Wozniak resolvió el primer problema. Diseñó un controlador de disquete “inteligente” que utilizaba únicamente 8 circuitos integrados, haciendo mediante lógica programada lo que el resto de controladores de discos conseguían con hardware.

Según el propio Wozniak:

I have no idea how I came up with that incredible disk controller. I was good at creating anything in electronics, analog or digital. I had no prior experience of any kind, not even in classes, regarding disk hardware or software. So my thinking had to be from the ground up. I had to sense data coming from the disk and make decisions about 0’s and 1’s based on timing.

I had taken a graduate level course at Berkeley (although an undergrad, I only took grad courses in anything having to do with computers in any university) on state machines and thought of how I could use 2 simple low cost chips as a state machine to do this, sort of a minimal microprocessor hand-built. At the time I just knew that it would read and write data but I assumed that I was leaving out many ingredients of a disk controller due to not knowing what they did. I assumed this because my design took so few parts. But in the end, mine did more in some good ways, especially since it was in the computer and tied to software that could alter how it worked, which eventually led to greater storage and faster speed that would not have been possible using the normal disk. Plus, I took about 20 chips off the drive itself and bypassed them from my own controller, because they were just middlemen that got in the way of things.

The best work I did, over and over, was partly due to not having money and having to learn how to use the fewest parts of anyone, and also due to the fact that everything great I created I had never done before.

https://www.bigmessowires.com/2021/11/12/the-amazing-disk-ii-controller-card/

El segundo problema, fue solucionado temporalmente por Wozniak, ya que entre él y Randy Wigginton escribieron un rudimentario sistema operativo que permitío utilizar la controladora y la unidad de discos y mostrarla en la Consumer Electronics Show en Enero de 1978.

En abril de 1978, Steve Jobs se encontró que carecían de un sistema operativo, y que Wozniak poseía poca experiencia en el diseño de sistemas operativos. Por ello firmó un contrato con Shepardson Microsystems, por 13.000$, para desarrollar el sistema operativo de disco. Se especificó el diseño de un gestor de archivos, una interfaz BASIC y utilidades, y que la entrega debía realizarse el 15 de mayo (poco más de un mes de plazo).

En apenas dos meses, Steve Wozniak, Randy Wigginton y Paul Laughton (de Shepardson Mycrosystems) escribieron el sistema operativo de disco DOS, muy ligado al Integer BASIC de Wozniak.

El Disk II salió a la venta en junio de 1978, junto con la primera versión del Apple DOS, la DOS 3.1. Sin embargo Apple no publicó ninguna documentación oficial hasta el lanzamiento de la versión 3.2. No hubo nunca versiones 1 o 2 de Apple DOS.

Durante el desarrollo, las diferentes revisiones se numeraron como versión 0.1, 0.2,… así hasta la versión 2.8. El Apple DOS 3.0 (en realidad una versión 2.8 renombrada) nunca fue publicado comercialmente.

Apple DOS tuvo tres lanzamientos principales: DOS 3.1, DOS 3.2 y DOS 3.3. Después de cada publicación se produjo un segundo lanzamiento de la misma versión con errores corregidos. Únicamente en el caso de las correcciones de la 3.2 estas recibieron su propio número de versión: DOS 3.2.1. De todas ellas, la versión más conocida y utilizada fue la DOS 3.3.

VersiónFechaComentario
3.0Junio 1978.Nunca publicado oficialmente.
3.1Julio 1978.La versión inicial tuvo un problema a la hora de crear copias de los discos originales del DOS, ya que las instrucciones de inicio incluida en los discos “copiados” solo podían ejecutarse en equipos con la misma cantidad de memora con la que habían sido creados.
3.2Febrero 1979.En el Apple II+ se incluye el AppleSoft BASIC en lugar del Integer BASIC original, por lo que hubo que adaptar el arranque del DOS. También, el firmware incluye una característica de autoarranque, que busca automáticamente una controladora de disco, pudiendo arrancar desde esa unidad.
3.2.1Julio 1979
3.3Agosto 1980

El Apple DOS 3.3, o DOS 3.3, fue lanzado en agosto de 1980. Esta versión mejoraba algunas funciones de la versión anterior. Pero además, el DOS 3.3 aprovecho las mejoras en las PROM’s de la controladora de disco, que permitían que se pudieran leer y escribir datos en “alta densidad“, ampliando el número de sectores de cada pista de 13 a 16.

CaracterísticaDOS 3.2DOS 3.3
Nº de pistas3535
Nº de sectores1316
Tamaño del sector256B256B
Capacidad del disco113,75KB140KB

Así, un disco formateado en DOS 3.3 pasó a tener 140KB por cada cara del disco (la unidad es de simple cara). De estos 140Kb, 16KB son utilizados por el sistema de ficheros general y una copia del DOS, lo que deja 124KB para los ficheros del usuario.

El mayor problema fue la incompatibilidad con las versiones anteriores, ya que la versión DOS 3.3 no podía leer ni escribir discos de la versión 3.2. Para solucionarlo, Apple publicó MUFFIN, una aplicación que podía migrar archivos de la 3.2 a la 3.3, pero nunca proporcionó ninguna herramienta para el paso contrario. A pesar de ello, un usuario creo la aplicación NIFFUM que realizaba este paso contrario. También algunas aplicaciones comerciales como Copy II Plus podían cambiar de un formato a otro.

El DOS 3.3 fue el sistema oficial de los Apple II, hasta que fue reemplazado por el ProDOS.

Muchos usuarios utilizaban versiones “parcheadas” que introducían mejoras o aumentaban la velocidad de acceso, siendo las mas conocidas el ProntoDOS de Beagle Bros o el ES DOS ][. También hubo versiones reducidas como RDOS que proporcionaban más espacio libre a los usuarios o hacían los discos más difíciles de copiar.

DOS 3.3 define una estructura de fichero plana (sin subdirectorios), en la que los nombre de fichero pueden tener hasta 30 caracteres. Sólo deben cumplir dos únicas restricciones:

  • El primer carácter debe ser un carácter con un código ASCI mayor que 63 (“@”)
  • Comas y punto y comas no se pueden utilizar.

Por lo demás, el nombre de fichero admite cualquier combinación de caracteres, incluyendo mayúsculas, minúsculas, números, símbolos y caracteres de Control.

Todos los comandos de manejo de ficheros (incluyendo CATALOG e INIT) tienen las siguientes opciones disponibles:

  • Sn: Especifica el número de Slot en que se encuentra la controladora de discos, habitualmente el 6. Por defecto es el slot accedido más recientemente.
  • Dn: Especifica a que drive en el controlador se accede. A menos que el DOS esté parcheado, DOS 3.3 solo puede manejar D1 y D2.
  • Vn: Especifica un número de volumen de disco. Cada disco DOS 3.3 tiene un número de volumen VN (Volume Number) que se establece al inicializar el disco. El número de volumen utilizado por defecto es 2541, aunque puede usarse el que se quiera:
INIT HELLO,V19

Sin embargo pocos programas utilizan el número de volumen. A menos que una aplicación necesite utilizar números de volumen, lo mejor es dejar el valor por defecto (254) para evitar complicaciones innecesarias.

Salida del comando CATALOG en un disco DOS 3.3:

  • En la primera columna, un * indica que el fichero está bloqueado.
  • La segunda indica el tipo de fichero.
  • En la tercera se indica la longitud del fichero (Módulo 256)
  • Y finalmente el nombre del fichero.

DOS 3.3 define 8 tipos de ficheros. El tipo de fichero se almacena en el sector de catálogo, y en el tercer byte en la entrada de cada archivo se indica el tipo de archivo y si está o no bloqueado:

Byte ContentsBinaryCharFile Type
$00x000 0000TText
$01x000 0001IInteger BASIC
$02x000 0010AAppleSoft BASIC
$04x000 0100BBinary
$08x000 1000SS type
$10x001 0000RR: Relocatable object module
$20x010 0000New A type
$40x100 0000New B type

El bit 7, el más significativo (x) indica si el fichero se ha bloqueado (1) mediante el comando LOCK.

El BASIC solo proporciona comandos para trabajar con archivos de tipo “B”, “A”, “I” y “T”. Solo se puede acceder a los cuatro tipos especiales mediante llamadas directas al Administrador de archivos.

Los archivos de tipo “R” aparecen en pocas aplicaciones. Comienzan con 6 bytes que una rutina “cargador” puede utilizar para indicar la ubicación de destino del contenido del archivo, cuántos bytes mover y la ubicación de origen desde la que mover. El kit de herramientas para uso con programas BASIC proporcionaba un cargador de reubicación de tipo “R”, así como un conjunto de rutinas reubicables que se cargaban en la memoria superior.

Los archivos de tipo “S” fueron utilizados por algunos programas para un archivo de imagen genérico, o algo que no era probable que se pudiera modificar con código normal.

Al formatear un disco bajo DOS 3.3 se escriben 35 pistas vacías, cada una de ellas con 16 sectores de 256 bytes. Luego se verifican las pistas y crea un registro de contenido denominado VTOC, que contiene información básica como el número de pistas, número de sectores por pistas, versión del DOS,.. y el mapa de los sectores utilizados y libres. El VTOC se almacena, en el DOS 3.3, en la pista 17, sector 0.

NOTAS:

  • El espacio entre el comando y el nombre del fichero no es necesario.
  • El orden de los parámetros después del nombre de los ficheros es indiferente.
  • Usar el parámetro D (Drive) y/o S (Slot) en un comando DOS, hace que se establezca ese Drive y/o Slot como Drive y/o Slot por defecto.
  • Unos pocos comandos puedes ser utilizados en programas, para lo cual hay que encerrarlos entre comillas y deben de ir precedidos de un PRINT CHR$(4). Por ejemplo:
100 PRINT CHR$(4) "BLOAD Fichero, A$2000"

Una de las mejores características del DOS 3.3 es que cualquier disco de arranque con DOS 3.3 puede crear otro disco de arranque. Así INIT HELLO formatea el disco en el drive activo, le añade el DOS y guarda el programa BASIC en memoria con el nombre “HELLO”.

El programa que se almacena inicialmente en el disco cuando se formatea, es el que se ejecuta cuando se arranca desde ese disco. Este programa se denomina “greeting o hello program” y usualmente se le denomina “HELLO”, pero puede tener cualquier nombre y ser lo simple que se quiera.


100 PRINT CHR$(4) "CATALOG"
110 END

El programa “HELLO” puede cargarse, modificarse e incluso borrarse como cualquier otro. La única restricción es que una vez inicializado un disco, el nombre del programa “HELLO” es fijo a menos que se vuelva a inicializar o se use una utilidad para modificar su nombre. Lo normal es dejar el programa con el nombre “HELLO” para saber siempre que es ese programa.

DOS 3.3 no se guarda en un fichero como en otros sistemas operativos, si no que se almacena “oculto” en unas pistas reservadas. Si un disco formateado bajo DOS 3.3 arranca, entonces el DOS 3.3 está presente en el disco.

Apple DOS Source Code

The DOS Manual

DOS Programmers Manual

NOTAS:

  1. Otros informaciones indican que el valor del número de volumen que DOS 3.3 utiliza por defecto es 0, y que muchos discos utilizan el 254. ↩︎


Publicado

en

, , , ,

por