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ón | Fecha | Comentario | ||||
---|---|---|---|---|---|---|
3.0 | Junio 1978. | Nunca publicado oficialmente. | ||||
3.1 | Julio 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.2 | Febrero 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.1 | Julio 1979 | |||||
3.3 | Agosto 1980 |
DOS 3.3
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ística | DOS 3.2 | DOS 3.3 |
---|---|---|
Nº de pistas | 35 | 35 |
Nº de sectores | 13 | 16 |
Tamaño del sector | 256B | 256B |
Capacidad del disco | 113,75KB | 140KB |
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 Reference
Binary File Commands | |||||
BSAVE name, Ax, Ln | Almacena en el fichero ‘name‘ el contenido de la memoria comenzando en la dirección x y el número de bytes indicados en la longitud n. | ||||
BLOAD name, Ax | Carga el fichero binario ‘name‘ a partir de la dirección de memoria x. | ||||
BASIC Program Commands | |||||
FP | Establece el sistema en AppleSoft BASIC y borra cualquier programa actualmente en memoria. | ||||
INT | Establece el sistema en Integer BASIC si se encuentra presente y borra cualquier programa actualmente en memoria. | ||||
RUN name | Ejecuta el fichero ‘name‘ desde el disco. | ||||
LOAD name | Carga el fichero ‘name‘ desde el disco. | ||||
SAVE name | Guarda el programa en BASIC actualmente en memoria en el disco con el nombre ‘name‘. | ||||
INIT name | Inicializa un disco. | ||||
MAXFILES n | Establece el número máximo de ficheros abiertos. El valor por defecto es 3. | ||||
MON {,C} {,I} {,O} | MON C, I, O: le indica al DOS que muestre los comandos, las entradas del disco y las salidas al disco. Puede especificar uno, dos o los tres (por ejemplo, MON C, O, etc.). | ||||
NOMON {,C} {,I} {,O} | Cancela todas las peticiones MON. Así, NOMON I cancela solo la petición “I”. | ||||
Programming Commands | |||||
CHAIN name | Permite a los programas en Integer BASIC ejecutar otros programas en Integer BASIC. | ||||
PR# n | Redirecciona la salida al slot n. PR#1 – establece el destino de las salidas del Apple en el dispositivo conectado en el Slot 1 (generalmente una impresora). PR# 0 – establece el destino de vuelta a la pantalla. PR# 6 – normalmente arranca del disco en el Drive 1, Slot 6. | ||||
IN# n | Redirecciona la entrada desde el slot n. IN# 6 – establece la fuente de la entradas desde del dispositivo en el Slot 6. IN# 0 – establece la fuente de las entradas al teclado (opción por defecto). | ||||
Filing Commands | |||||
CATALOG | Muestra el contenido del directorio del disco actual. | ||||
RENAME oldname, newname | Cambia el nombre de un fichero del disco. | ||||
DELETE name | Borra el fichero de nombre ‘name‘. | ||||
LOCK name | Bloquea el fichero ‘name‘ evitando que sea borrado, eliminado, renombrado o cambiado. | ||||
UNLOCK name | Elimina el bloqueo del fichero ‘name‘. | ||||
VERIFY name | Comprueba mediante checksums que el fichero ‘name‘ no es un fichero dañado. | ||||
Text File Commands | |||||
OPEN name | Prepara un fichero de texto llamado ‘name‘ para lectura o escritura. | ||||
CLOSE name | Cierra un fichero de texto de nombre ‘name‘. Si se usa sin ningún nombre de fichero se cierran todos los ficheros de texto abierto. | ||||
READ name | Indica al DOS que los comandos INPUT y GET obtendrán caracteres de un fichero de texto de nombre ‘name‘ . | ||||
WRITE name | Indica al DOS que los caracteres impresos se escribirán en un fichero de texto de nombre ‘name‘. | ||||
APPEND name | Indica al DOS que los caracteres impresos se escribirán en el fichero ‘name‘ al final del fichero, o sea, se añadirán al final. | ||||
POSITION name,x | Mueve el puntero de registro del fichero de nombre ‘name‘ a la posición indicada por x. | ||||
EXEC name | Indica al DOS que ejecute los comandos BASIC y DOS que se encuentre en un fichero de fichero de texto de nombre ‘name‘. | ||||
Los anteriores comandos manejan ficheros de texto secuenciales. DOS también permite manejar ficheros de texto con acceso aleatorio. |
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 Contents | Binary | Char | File Type |
---|---|---|---|
$00 | x000 0000 | T | Text |
$01 | x000 0001 | I | Integer BASIC |
$02 | x000 0010 | A | AppleSoft BASIC |
$04 | x000 0100 | B | Binary |
$08 | x000 1000 | S | S type |
$10 | x001 0000 | R | R: Relocatable object module |
$20 | x010 0000 | New A type | |
$40 | x100 0000 | New 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.
DOCUMENTACIÓN
Apple DOS Source Code
The DOS Manual
DOS Programmers Manual
NOTAS:
- 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. ↩︎