AmigaDOS es el sistema operativo de disco de AmigaOS , que incluye sistemas de archivos , manipulación de archivos y directorios, la interfaz de línea de comandos y redirección de archivos .
En AmigaOS 1.x, AmigaDOS se basa en un puerto TRIPOS de MetaComCo , escrito en BCPL . BCPL no utiliza punteros nativos, por lo que la funcionalidad más avanzada del sistema operativo era difícil de usar y propensa a errores. El Proyecto de recursos de terceros AmigaDOS [1] (ARP, anteriormente el Proyecto de reemplazo de AmigaDOS ), [2] un proyecto iniciado por el desarrollador de Amiga Charlie Heath, reemplazó muchas de las utilidades BCPL con equivalentes más pequeños y sofisticados escritos en C y ensamblador , y proporcionó una biblioteca contenedora , arp.library
. Esto eliminó los problemas de interfaz en las aplicaciones al realizar automáticamente conversiones de punteros nativos (como los utilizados por C o ensamblador) a equivalentes BCPL y viceversa para todas las funciones de AmigaDOS.
A partir de AmigaOS 2.x, AmigaDOS se reescribió en C, manteniendo la compatibilidad con 1.x siempre que fue posible. A partir de AmigaOS 4, AmigaDOS abandonó su legado con BCPL. A partir de AmigaOS 4.1, AmigaDOS se ha ampliado con compatibilidad con acceso a archivos de 64 bits .
La consola de Amiga es un dispositivo virtual estándar de Amiga , normalmente asignado a CON: y controlado por console.handler . Fue desarrollado a partir de una interfaz primitiva en AmigaOS 1.1, y se volvió estable con las versiones 1.2 y 1.3, cuando comenzó a ser conocido como AmigaShell y su manejador original fue reemplazado por newconsole.handler ( NEWCON: ).
La consola tiene varias características que se consideraban actualizadas cuando se creó en 1985, como la ayuda de plantilla de comandos, la redirección a null (" NIL: ") y la terminal de color ANSI . El nuevo controlador de consola, que se implementó en la versión 1.2, permite muchas más funciones, como el historial de comandos , las canalizaciones y la creación automática de archivos cuando se redirige la salida . Cuando se lanzaron pilas TCP/IP como AmiTCP a principios de los años 90, la consola también podía recibir redirección de los controladores de dispositivos Amiga habilitados para Internet (por ejemplo, TCP: , copy file TO TCP:Site/Port ).
A diferencia de otros sistemas lanzados originalmente a mediados de la década de 1980, AmigaDOS no implementa un conjunto de caracteres propietario; los desarrolladores eligieron utilizar el estándar ANSI- ISO ISO-8859-1 (Latin 1) , que incluye el conjunto de caracteres ASCII . Al igual que en los sistemas Unix , la consola Amiga acepta solo el salto de línea (" LF ") como carácter de fin de línea (" EOL "). La consola Amiga tiene soporte para caracteres acentuados , así como para caracteres creados por combinaciones de "teclas muertas" en el teclado.
Este es un ejemplo de sintaxis de comando típica de AmigaDOS:
AmigaDOS puede redirigir la salida de un comando a archivos, tuberías, una impresora, el dispositivo nulo y otros dispositivos Amiga.
Se espera que los comandos de AmigaDOS proporcionen una "plantilla" estándar que describa los argumentos que pueden aceptar. Esto se puede utilizar como una función de "ayuda" básica para los comandos, aunque los controladores y shells de consola de reemplazo de terceros , como Bash o Zshell (portados desde Unix ), o KingCON, a menudo proporcionan una ayuda más detallada para los comandos integrados.
Al solicitar la plantilla para el comando " Copiar ", se obtiene el siguiente resultado:
Al leer esta plantilla, un usuario puede saber que la siguiente sintaxis es aceptable para el comando:
Un usuario puede finalizar un programa invocando la combinación de teclas Ctrl+ Co + . Al presionar o cualquier carácter de impresión en el teclado se suspende la salida de la consola. La salida se puede reanudar presionando la tecla (para eliminar toda la entrada) o presionando (lo que hará que la entrada se procese como un comando tan pronto como el comando actual deje de ejecutarse).CtrlDspace← Backspace↵ Enter
Al igual que otros sistemas operativos, AmigaDOS también proporciona caracteres comodín que sustituyen a cualquier carácter o secuencia de caracteres aleatorios en una cadena. A continuación, se muestra un ejemplo de caracteres comodín en los comandos de AmigaDOS:
El análisis de esto es el siguiente. El comodín "?" indica "cualquier carácter". Si se antepone un "#", se indica "cualquier número de repeticiones". Esto puede considerarse análogo a la expresión regular ".*".
AmigaDOS también tiene la característica de manejar programación por lotes , a la que llama programación de "scripts", y tiene una serie de comandos como Echo
, If
, Then
, EndIf
, Val
, y Skip
para manejar programación de scripts estructurados. Los scripts son archivos basados en texto y pueden crearse con el programa editor de texto interno de AmigaDOS, llamado Ed (sin relación con Ed de Unix ), o con cualquier otro editor de texto de terceros. Para invocar un programa de script, AmigaDOS usa el comando Execute
.
1> Ejecutar myscript
Esto ejecuta el script llamado "myscript".
Este método de ejecución de scripts mantiene ocupada la ventana de la consola hasta que el script haya finalizado su trabajo programado. Los usuarios no pueden interactuar con la ventana de la consola hasta que el script finalice o hasta que lo interrumpan.
Mientras:
1> Ejecutar Ejecutar myscript
El comando AmigaDOS Run
ejecuta cualquier comando DOS o cualquier tipo de programa y mantiene la consola libre para futuras entradas.
Los bits de protección son indicadores que tienen los archivos, enlaces y directorios en el sistema de archivos. Para cambiarlos, se puede utilizar el comando Protect o la entrada Information del menú Icons en Workbench en los archivos seleccionados. AmigaDOS admite el siguiente conjunto de bits de protección (abreviados como HSPARWED):
Execute
comando.El bit H se ha entendido a menudo erróneamente como "ocultar". En el Sistema de archivos inteligente (SFS), los archivos y directorios con el bit H activado están ocultos para el sistema. Aún es posible acceder a los archivos ocultos, pero no aparecen en ninguna lista de directorios.
Demostración de H-bit en acción:
AmigaPrompt> ¿Qué lista?Banco de trabajo: C/ListaAmigaPrompt> banco de trabajo de lista:c/listDirectorio "workbench:c" el jueves 30-Oct-08lista 6464 --p-rwed 25-feb-02 22:30:001 archivo - 14 bloques utilizadosAmigaPrompt> ¿Qué lista?Banco de trabajo: C/ListaAmigaPrompt> proteger workbench:c/list +h AmigaPrompt> qué listaBanco de trabajo: C/ListaAmigaPrompt> banco de trabajo de lista:c/listDirectorio "workbench:c" el jueves 30-Oct-08lista 6464 hp-rwed 25-feb-02 22:30:001 archivo - 14 bloques utilizadosAmigaPrompt> ¿Qué lista?Lista de RES
Como cualquier otro DOS, Amiga trata con variables de entorno tal como se utilizan en la programación por lotes.
Existen variables globales y locales, y se hace referencia a ellas con un signo de dólar delante del nombre de la variable, por ejemplo $myvar . Las variables globales están disponibles en todo el sistema; las variables locales solo son válidas en el shell actual. En caso de conflicto de nombres, las variables locales tienen prioridad sobre las variables globales. Las variables globales se pueden configurar utilizando el comando SetEnv , mientras que las variables locales se pueden configurar utilizando el comando Set . También existen los comandos GetEnv y Get que se pueden utilizar para imprimir variables globales y locales.
Los ejemplos siguientes demuestran un uso simple:
1> setenv foo blapp 1> echo $foo blapp 1> establecer foo bar 1> echo $foo bar 1> getenv foo blapp 1> obtener foo bar 1> tipo ENV:foo blapp 1> setenv guardar foo $foo 1> tipo ENV:foo bar 1> tipo ENVARC:foo bar
Las variables globales se guardan como archivos en ENV: y, opcionalmente, se guardan en el disco en ENVARC: para sobrevivir al reinicio y al ciclo de encendido . ENV: es, por defecto, una asignación a RAM:Env y ENVARC: es una asignación a SYS:Prefs/Env-archive, donde SYS: hace referencia al dispositivo de arranque . Al iniciar, el contenido de ENVARC: se copia a ENV: para facilitar la accesibilidad.
Al programar scripts de AmigaDOS, hay que tener en cuenta que las variables globales son de todo el sistema. Todas las variables internas de los scripts se deben configurar utilizando variables locales, o se corre el riesgo de que surjan conflictos entre scripts por las variables globales. Además, las variables globales requieren acceso al sistema de archivos, lo que normalmente hace que su acceso sea más lento que el de las variables locales.
Dado que ENVARC: también se utiliza para almacenar otras configuraciones del sistema además de variables de cadena (como configuraciones del sistema, íconos predeterminados y más), tiende a crecer con el tiempo y copiar todo a ENV: ubicado en el disco RAM se vuelve costoso. Esto ha llevado a formas alternativas de configurar ENV: mediante el uso de controladores de disco RAM dedicados que solo copian archivos desde ENVARC: cuando se solicitan los archivos. Algunos ejemplos de dichos controladores son [4] y [5] .
Un ejemplo que demuestra el abuso creativo de las variables globales, así como de Lab y Skip , es la variante AmigaDOS del infame GOTO . [6]
En general, AmigaDOS no distingue entre mayúsculas y minúsculas . [7] Indicar un dispositivo como "Dh0:", "DH0:" o "dh0:" siempre se refiere a la misma partición ; sin embargo, para los nombres de archivos y directorios, esto depende del sistema de archivos, y algunos sistemas de archivos permiten distinguir entre mayúsculas y minúsculas como una bandera al formatear. Un ejemplo de un sistema de archivos de este tipo es Smart File System . Esto es muy conveniente cuando se trabaja con software portado desde el mundo Un*x , que en su mayoría distingue entre mayúsculas y minúsculas , pero causa mucha confusión para las aplicaciones nativas de Amiga, que asumen que no distinguen entre mayúsculas y minúsculas. Por lo tanto, los usuarios avanzados normalmente solo usarán la bandera de distinción entre mayúsculas y minúsculas para los sistemas de archivos utilizados para el software originado en Un*x.
Se permite cambiar el formato de los nombres de archivos, directorios y volúmenes usando métodos comunes; los comandos "rename foo Foo" y "relabel Bar: bAr:" son válidos y hacen exactamente lo que se espera, a diferencia de, por ejemplo, Linux , donde "mv foo Foo" da como resultado el mensaje de error "mv: `foo' y `Foo' son el mismo archivo" en sistemas de archivos que no distinguen entre mayúsculas y minúsculas, como VFAT .
Las particiones y unidades físicas se denominan normalmente DF0: (unidad de disquete 0), DH0: (disco duro 0), etc. Sin embargo, a diferencia de muchos sistemas operativos, fuera de los dispositivos de hardware físicos integrados como DF0: o HD0: , los nombres de los discos individuales, volúmenes y particiones son totalmente arbitrarios: por ejemplo, una partición de disco duro podría llamarse Work o System , o cualquier otra cosa en el momento de su creación. Los nombres de volumen se pueden utilizar en lugar de los nombres de dispositivo correspondientes, por lo que se podría acceder a una partición de disco en el dispositivo DH0: llamada Workbench con el nombre DH0: o Workbench: . Los usuarios deben indicar al sistema que " Workbench " es el volumen " Workbench: " escribiendo siempre los dos puntos " : " cuando ingresan información en un formulario de solicitud o en AmigaShell.
Si no se puede encontrar el nombre del volumen al que se accedió, el sistema operativo solicitará al usuario que inserte el disco con el nombre de volumen dado o le permitirá cancelar la operación.
Además, los nombres de dispositivos lógicos pueden configurarse con el comando "assign" a cualquier directorio o dispositivo; los programas a menudo asignan un nombre de volumen virtual a su directorio de instalación (por ejemplo, un procesador de texto ficticio llamado Writer podría asignar Writer: a DH0:Productivity/Writer ). Esto permite una fácil reubicación de los programas instalados. El nombre predeterminado SYS: se utiliza para referirse al volumen desde el que se inició el sistema. Se proporcionan otros nombres predeterminados para referirse a ubicaciones importantes del sistema. Por ejemplo, S: para scripts de inicio, C: para comandos de AmigaDOS, FONTS: para fuentes instaladas, etc.
La asignación de etiquetas de volumen también se puede configurar en varios directorios, que se tratarán como una unión de sus contenidos. Por ejemplo, FONTS: se puede asignar a SYS:Fonts y luego extender para incluir, por ejemplo, Work:UserFonts utilizando la opción add del comando de asignación de AmigaDos . El sistema permitiría entonces el uso de fuentes instaladas en cualquiera de los directorios. Al incluir FONTS: se mostrarían los archivos de ambas ubicaciones.
El dispositivo físico DF0: comparte la misma mecánica de unidad de disquete con PC0:, que es el dispositivo virtual CrossDOS capaz de leer disquetes formateados para PC. Cuando se inserta cualquier disquete formateado para PC en la unidad de disquete, el icono de Amiga DF0: floppy cambiará para indicar que el disco es desconocido para el dispositivo Amiga normal, y mostrará cuatro signos de interrogación ???? como el nombre de volumen "desconocido" estándar, mientras que el icono PC0: aparecerá revelando el nombre del disco formateado para PC. Cualquier cambio de disco con discos formateados para Amiga invertirá este comportamiento.
AmigaDOS soporta varios sistemas de archivos y variantes. El primer sistema de archivos se llamaba simplemente Amiga FileSystem y era adecuado principalmente para disquetes, ya que no soportaba el arranque automático desde discos duros (en disquetes, el arranque se hacía usando código desde el bloque de arranque). Pronto fue reemplazado por FastFileSystem (FFS), y por lo tanto el sistema de archivos original era conocido con el nombre de "Old" FileSystem (OFS). FFS era más eficiente en cuanto a espacio y bastante más rápido que OFS, de ahí el nombre.
Con AmigaOS 2.x, FFS se convirtió en una parte oficial del sistema operativo y pronto se expandió para reconocer particiones en caché, particiones internacionales que permiten caracteres acentuados en nombres de archivos y particiones y, finalmente (con MorphOS y AmigaOS 4 ) nombres de archivos largos, de hasta 108 caracteres (de 31).
Tanto AmigaOS 4.x como MorphOS presentaron una nueva versión de FFS llamada FastFileSystem 2. FFS2 incorporó todas las características del FFS original, incluyendo, como dijo su autor, "algunos cambios menores". Para preservar la compatibilidad con versiones anteriores, no hubo cambios estructurales importantes. (Sin embargo, FF2 en AmigaOS 4.1 se diferencia en que puede expandir sus características y capacidades con la ayuda de complementos ). Al igual que con FFS2, la versión de AmigaOS 4 y MorphOS de Smart FileSystem es una bifurcación del SFS original y no es 100% compatible con él.
Otros sistemas de archivos como FAT12 , FAT16 , FAT32 de Windows o ext2 de Linux están disponibles a través de bibliotecas de sistema fácilmente instalables ( arrastrar y soltar ) o módulos de terceros como FAT95 [8] (cuenta con soporte de lectura/escritura), que se puede encontrar en el repositorio de software de Aminet . MorphOS 2 tiene soporte integrado para sistemas de archivos FAT.
AmigaOS 4.1 adoptó un nuevo sistema de archivos llamado JXFS capaz de soportar particiones de más de un terabyte de tamaño.
Los sistemas de archivos alternativos de fabricantes externos incluyen Professional FileSystem , que es un sistema de archivos con una estructura sencilla, basada en metadatos , que permite una alta coherencia interna, capaz de desfragmentarse sobre la marcha y no requiere ser desmontado antes de ser montado nuevamente; y Smart FileSystem , que es un sistema de archivos con registro que realiza actividades registradas durante las inactividades del sistema, y ha sido elegido por MorphOS como su sistema de archivos estándar.
Sistema de archivos antiguo / Sistema de archivos rápido
Sistema de archivos rápido 2 (AmigaOS4.x/MorphOS)
Tanto DOS6 como DOS7 incluyen nombres de archivo internacionales presentes en DOS2 y DO3, pero no la función de almacenamiento en caché de directorios, que se abandonó debido a errores en la implementación original. Por este motivo, no se recomienda el uso de DOS4 y DOS5.
Los Dostypes son compatibles entre sí con versiones anteriores, pero no con versiones posteriores . Un disco formateado con DOS7 no se puede leer en el FFS original de Amiga, y un disco con DOS3 no se puede leer en un Amiga KS1.3. Sin embargo, cualquier disco formateado con DOS0 usando FFS o FFS2 se puede leer en cualquier versión del sistema operativo Amiga. Por esta razón, DOS0 tendía a ser el formato elegido por los desarrolladores de software que distribuían en disquete, excepto cuando se usaba un sistema de archivos y un bloque de arranque personalizados, una práctica común en los juegos de Amiga. Cuando el software necesitaba AmigaOS 2 de todos modos, generalmente se usaba DOS3.
Con la actualización de julio de 2007 de AmigaOS 4.0 , se lanzaron los dos primeros complementos para FFS2:
AmigaDOS tiene una única extensión de nombre de archivo obligatoria: ".info", que debe añadirse al nombre de archivo de cada icono. Si existe un archivo llamado myprog , entonces su archivo de icono debe llamarse myprog.info . Además de los datos de imagen, el archivo de icono también registra metadatos del programa , como opciones y palabras clave, su propia posición en el escritorio (AmigaOS puede "capturar" iconos en lugares definidos por el usuario) y otra información sobre el archivo. La información sobre el tamaño y la posición de la ventana del directorio se almacena en el archivo ".info" asociado con el directorio, y la información sobre el icono del disco se almacena en "Disk.info" en la raíz del volumen.
Con la excepción de los íconos, el sistema Amiga no identifica los tipos de archivos mediante extensiones, sino que examinará el ícono asociado con un archivo o el encabezado binario del archivo en sí para determinar el tipo de archivo.