# AmigaDOS

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 la redirección de archivos.
En AmigaOS 1.x, AmigaDOS se basa en un port de 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 AmigaDOS de terceros (ARP, anteriormente conocido como Proyecto de reemplazo AmigaDOS), 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 de envoltorio, arp.library . Esto eliminó los problemas de interconexión en las aplicaciones al realizar automáticamente conversiones de punteros nativos (como los utilizados por C o el ensamblador) a los equivalentes de BCPL y viceversa para todas las funciones de AmigaDOS.
Desde AmigaOS 2.x en adelante, AmigaDOS se reescribió en C, conservando la compatibilidad con 1.x siempre que fue posible. Comenzando con AmigaOS 4, AmigaDOS abandonó su legado con BCPL. A partir de AmigaOS 4.1, AmigaDOS se ha ampliado con soporte de acceso a archivos de 64 bits.

## Consola

La consola Amiga es un dispositivo virtual estándar de Amiga, normalmente asignado a CON: y controlado por console.handler. Se desarrolló a partir de una interfaz primitiva en AmigaOS 1.1, y se estabilizó con las versiones 1.2 y 1.3, cuando comenzó a conocerse como AmigaShell y su controlador original fue reemplazado por newconsole.handler (NEWCON:).
La consola tiene varias características que se consideraron vanguardistas cuando se creó en 1985, como la Ayuda de la plantilla de comandos, la redirección a nulo (" NIL: ") y el terminal de color ANSI. El nuevo controlador de la consola, que se implementó en la versión 1.2, permite muchas más funciones, como el historial de comandos, las tuberías y la creación automática de archivos cuando se redirige la salida. Cuando se lanzó las pilas TCP/IP como AmiTCP a principios de la década de 1990, la consola también podría recibir la redirección de los controladores de dispositivos Amiga habilitados para Internet (por ejemplo, TCP:, archivo de copia A TCP: Sitio/Puerto ).
A diferencia de otros sistemas originalmente lanzados a mediados de la década de 1980, AmigaDOS no implementa un conjunto de caracteres propietario; los desarrolladores optaron por 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 solo acepta el salto de línea (" LF ") como un carácter de final de línea (" EOL "). La consola Amiga es compatible con caracteres acentuados, así como para los caracteres creados por combinaciones de "teclas muertas" en el teclado.

## Sintaxis de los comandos de AmigaDOS

Este es un ejemplo de la sintaxis típica del comando AmigaDOS:
    Dir DF0:
    Sin ingresar al árbol de directorios, esto muestra el contenido de un directorio de un disquete y también enumera los subdirectorios.
    Dir SYS: ALL
    El argumento "ALL" hace que el comando muestre todo el contenido de un volumen o dispositivo, ingresando y expandiendo todos los árboles de directorios. "SYS:" es un nombre predeterminado que se asigna al dispositivo de inicio, independientemente de su nombre físico.

### Comando de redirección

AmigaDOS puede redirigir la salida de un comando a archivos, tuberías, una impresora, el dispositivo nulo y otros dispositivos Amiga.
    Dir > SPEAK: ALL
    Redirige la salida del comando "dir" al controlador de síntesis de voz. El carácter de dos puntos ":" indica que SPEAK: apunta a un dispositivo AmigaDOS. Si bien un uso típico de un dispositivo es el de los sistemas de archivos, los nombres de dispositivos de propósito especial como este se usan comúnmente en el sistema.

### Plantillas de comando

Se espera que los comandos de AmigaDOS proporcionen una "plantilla" estándar que describa los argumentos que pueden aceptar. Esto se puede usar como una función básica de "ayuda" para los comandos, aunque los controladores y shells de la consola de reemplazo de terceros, como Bash o Zshell (portados desde Unix ), o KingCON a menudo proporcionan ayuda más detallada para los comandos incorporados.
Al solicitar la plantilla para el comando " Copiar ", se obtiene el siguiente resultado:
    Copy ? FROM, TO/A, ALL/S, QUIET/S
    Esta cadena significa que el usuario debe usar este comando junto con los argumentos FROM y TO, donde este último es obligatorio (/A). Las palabras clave de argumento ALL y QUIET son modificadores (/S) y cambian los resultados del comando Copiar (ALL hace que se copien todos los archivos en un directorio, mientras que QUIET hará que el comando no genere resultados a la salida estándar).
Al leer esta plantilla, un usuario puede saber que la siguiente sintaxis es aceptable para el comando:
    Copy DF0:Filename TO DH0:Directory/Filename

### Finalización comandos y pausando salida de consola

Un usuario puede terminar un programa invocando la combinación de Ctrl+C o Ctrl+D Presionar space o cualquier carácter de impresión en el teclado suspende la salida de la consola. La salida se puede reanudar presionando la tecla backspace (para eliminar toda la entrada) o presionando ↵ Entrar (lo que hará que la entrada se procese como un comando tan pronto como el comando actual deje de ejecutarse).

### Caracteres comodín

Al igual que otros sistemas operativos, AmigaDOS también proporciona caracteres comodín que sustituyen a cualquier carácter o cualquier secuencia de caracteres aleatorios en una cadena. Aquí hay un ejemplo de caracteres comodín en los comandos de AmigaDOS:
    Dir #?.info
    Busca en el directorio actual cualquier archivo que contenga ".info" al final como sufijo, y muestra solo estos archivos en la salida.
El análisis de esto es el siguiente. El comodín "?" indica "cualquier carácter". El prefijo con un "#" indica "cualquier número de repeticiones". Esto puede verse como análogo a la expresión regular ". * ".

## Scripting

AmigaDOS también tiene la función de tratar con la programación por lotes, que llama programación de "script", y tiene una serie de comandos como Echo, If, Then, EndIf, Val y Skip para tratar con la programación de script estructurado. Los scripts son archivos basados en texto y se pueden crear con el programa de editor de texto interno de AmigaDOS, llamado Ed (no relacionado con Ed de Unix), o con cualquier otro editor de texto de terceros. Para invocar un programa de script, AmigaDOS usa el comando Execute: para ejecuta el script llamado "myscript".
Este método de ejecución de scripts mantiene la ventana de la consola ocupada hasta que el script finalice su trabajo programado. Los usuarios no pueden interactuar con la ventana de la consola hasta que finalice el script o hasta que lo interrumpan.
Mientras:
    Copy ? FROM, TO/A, ALL/S, QUIET/S
    Esta cadena significa que el usuario debe usar este comando junto con los argumentos FROM y TO, donde este último es obligatorio (/A). Las palabras clave de argumento ALL y QUIET son switches (/S) y cambian los resultados del comando Copiar (ALL hace que se copien todos los archivos en un directorio, mientras que QUIET hará que el comando no genere resultados).

### Bits de protección

Los bits de protección son marcas que los archivos, enlaces y directorios tienen en el sistema de archivos. Para cambiarlos, puede usar el comando Protect o la entrada de información del menú Icons en Workbench en los archivos seleccionados. AmigaDOS admite el siguiente conjunto de bits de protección (abreviado como HSPARWED):
* H = Mantener (los comandos de reentrada con el conjunto de bits P se volverán residentes automáticamente en la primera ejecución. Requiere E, P y R bits establecidos para trabajar. No significa "Ocultar". Vea abajo. )
* S = Script (archivo por lotes. Requiere E y R bits establecidos para trabajar. ) Si este bit de protección está activado, entonces AmigaDOS puede reconocer y ejecutar automáticamente un script simplemente invocando su nombre. Sin S bit, los scripts aún se pueden iniciar con el comando Ejecutar .
* P = Puro (indica comandos reentrantes que pueden hacerse residentes en la RAM y que ya no necesitan cargarse en ningún momento desde unidades flash, discos duros o cualquier otro dispositivo de medios). Requiere E y R bits establecidos para trabajar. )
* A = Archivo (bit archivado, utilizado por varios programas de copia de seguridad para indicar que se ha realizado una copia de seguridad de un archivo)
* R = Leer (Permiso para leer el archivo, enlace o contenido del directorio)
* W = Escribir (Permiso para escribir el archivo, enlace o dentro de un directorio)
* E = Ejecutar (Permiso para ejecutar el archivo o ingresar al directorio. Todos los comandos necesitan este bit establecido, o no se ejecutarán. Requiere el bit R configurado para funcionar. )
* D = Eliminar (Permiso para eliminar el archivo, enlace o directorio)
El bit H a menudo ha sido mal interpretado para significar "Ocultar". En el Sistema de archivos inteligentes (SFS), los archivos y directorios con el conjunto de bits H están ocultos del sistema. Todavía es posible acceder a archivos ocultos pero no aparecen en ninguna lista de directorios.
Demostración del bit H en acción:
    AmigaPrompt> which list Workbench:C/List AmigaPrompt> list workbench:c/list Directory "workbench:c" on Thursday 30-Oct-08 list 6464 --p-rwed 25-Feb-02 22:30:00 1 file - 14 blocks used AmigaPrompt> which list Workbench:C/List AmigaPrompt> protect workbench:c/list +h AmigaPrompt> which list Workbench:C/List AmigaPrompt> list workbench:c/list Directory "workbench:c" on Thursday 30-Oct-08 list 6464 h-p-rwed 25-Feb-02 22:30:00 1 file - 14 blocks used AmigaPrompt> which list  RES list
    Observe cómo el comando list se convierte en residente después de la ejecución cuando se establece el bit H.

### Variables locales y globales

Como cualquier otro DOS, Amiga se ocupa de las variables de entorno que se utilizan en la programación por lotes.
Hay 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 colisión de nombres, las variables locales tienen prioridad sobre las variables globales. Las variables globales se pueden configurar con el comando SetEnv, mientras que las variables locales se pueden configurar con el comando Set. También hay los comandos GetEnv y Get que se pueden usar para imprimir variables globales y locales respectivamente.
Los siguientes ejemplos demuestran un uso simple:
    setenv foo blapp echo $foo blapp set foo bar echo $foo bar getenv foo blapp get foo bar type ENV:foo blapp setenv save foo $foo type ENV:foo bar type ENVARC:foo bar
    Observe el indicador de guardado del comando SetEnv y cómo las variables globales están disponibles en el sistema de archivos.
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 energía. ENV: es por defecto una asignación a RAM: Env, y ENVARC: es una asignación a SYS: Prefs/Env-archive donde SYS: se refiere al dispositivo de arranque. En el arranque, el contenido de ENVARC: se copia a ENV: para accesibilidad.
Al programar los scripts de AmigaDOS, se debe tener en cuenta que las variables globales son para todo el sistema. Todas las variables internas de la secuencia de comandos se establecerán utilizando variables locales, o uno corre el riesgo de conflictos sobre las variables globales entre secuencias de comandos. Además, las variables globales requieren acceso al sistema de archivos, lo que generalmente las hace más lentas de acceder que las variables locales.
Dado que ENVARC: también se usa para almacenar otras configuraciones del sistema además de las variables de cadena (como las configuraciones del sistema, los iconos predeterminados y más), tiende a crecer mucho con el tiempo, y copiar todo en ENV: ubicado en el disco RAM se vuelve costoso. Esto ha conducido a formas alternativas de configurar ENV: mediante el uso de controladores de disco RAM dedicados que solo copian archivos de ENVARC: cuando se solicitan los archivos. Ejemplos de tales manejadores son y.
Un ejemplo que demuestra el abuso creativo de variables globales, así como Lab y Skip, es la variante AmigaDOS del infame GOTO .

## Sensibilidad a mayúsculas

AmigaDOS es, en general, no distingue entre mayúsculas y minúsculas. 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 la distinción entre mayúsculas y minúsculas como una marca al formatear. Un ejemplo de un sistema de archivos de este tipo es Smart File System . Esto es muy conveniente cuando se trata de software transferido desde el mundo Un*x, que en su mayoría es sensible a las mayúsculas y minúsculas, pero causa mucha confusión en las aplicaciones Amiga nativas, que suponen una insensibilidad a los casos. Por lo tanto, los usuarios avanzados normalmente solo usarán el indicador de sensibilidad a las mayúsculas y minúsculas para los sistemas de archivos utilizados para el software originado en Un*x
Tenga en cuenta también que la conversión de nombres de archivos, directorios y volúmenes se permite utilizando métodos ordinarios; los comandos "rename foo Foo" y "relabel Bar: bAr:" son válidos y hacen exactamente lo que se espera, a diferencia de, por ejemplo, en Linux, donde "mv foo Foo" da como resultado el mensaje de error "mv:` foo 'y `Foo 'es el mismo archivo" en sistemas de archivos que no distinguen entre mayúsculas y minúsculas como VFAT .

## Convenciones de nomenclatura de volumen

Las particiones y las unidades físicas suelen denominarse DF0: (unidad de disquete 0), DH0: (unidad de disco duro 0), etc. Sin embargo, a diferencia de muchos sistemas operativos, fuera de los dispositivos físicos de hardware integrados como DF0: o HD0: los nombres de los discos, volúmenes y particiones individuales son totalmente arbitrarios: por ejemplo, una partición del disco duro podría denominarse Trabajo o Sistema, o Cualquier otra cosa en el momento de su creación. Los nombres de los volúmenes se pueden usar en lugar de los nombres de dispositivos correspondientes, por lo que se puede acceder a una partición de disco en el dispositivo DH0: llamado Workbench, ya sea 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 solicitante o en AmigaShell.
Si no se puede encontrar un nombre de volumen al que se accedió, el sistema operativo solicitará al usuario que inserte el disco con el nombre de volumen dado o permitirá que el usuario cancele la operación.
Además, los nombres de dispositivos lógicos se pueden configurar 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 textos 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 usa para referirse al volumen desde el que se inició el sistema. Se proporcionan otros nombres predeterminados para referirse a ubicaciones importantes del sistema. p.ej S: para los scripts de inicio, C: para los comandos de AmigaDOS, FONTS: para las fuentes instaladas, etc.
La asignación de etiquetas de volumen también se puede establecer en varios directorios, que se tratarán como una unión de sus contenidos. Por ejemplo, FONTS: podría asignarse a SYS:Fonts, luego extenderse para incluir, por ejemplo, Work:UserFonts usando la opción de add del comando de assign de AmigaDos. El sistema permitiría entonces el uso de fuentes instaladas en cualquier directorio. Listado de Fonts: mostraría los archivos de ambas ubicaciones.

## Convenciones de nombres y comportamiento típico de dispositivos virtuales.

El dispositivo físico DF0: comparte la misma mecánica de la unidad de disquete con PC0:, que es el dispositivo virtual CrossDOS capaz de leer disquetes formateados en PC. Cuando se introduce cualquier disquete con formato PC en la unidad de disquete, entonces el DF0: icono de disquete Amiga cambiará para indicar que el disco es desconocida para el dispositivo normal de Amiga, y se mostrará cuatro signos de interrogación ???? como el nombre de volumen "desconocido" estándar, mientras que el icono PC0: aparecerá y mostrará el nombre del disco formateado para PC. Cualquier cambio de disco con discos formateados de Amiga invertirá este comportamiento.

## Sistemas de archivos

AmigaDOS soporta varios sistemas de archivos y variantes. El primer sistema de archivos se llamaba simplemente Amiga FileSystem y era adecuado principalmente para disquetes, porque no admitía el arranque automático desde discos duros (en el disquete, el arranque se realizaba utilizando el código del bloque de arranque). Pronto fue reemplazado por FastFileSystem (FFS) y, por lo tanto, el sistema de archivos original se conocía con el nombre de "Old" FileSystem (OFS). FFS era más eficiente en el 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 los nombres de archivo y partición, y finalmente (con MorphOS y AmigaOS 4) nombres de archivo largos, hasta 108 caracteres. (a partir del 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, según su autor, "algunos cambios menores". Con el fin de preservar la compatibilidad hacia atrás, no hubo cambios estructurales importantes. (Sin embargo, FF2 en AmigaOS 4.1 se diferencia en que puede ampliar sus características y capacidades con la ayuda de complementos). Al igual que con FFS2, la versión 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 sistemas fácilmente instalables (arrastrar y soltar) o módulos de terceros como FAT95 (características de soporte de lectura / escritura), que se pueden encontrar en el Repositorio de software Aminet . MorphOS 2 tiene soporte incorporado para sistemas de archivos FAT.
AmigaOS 4.1 adoptó un nuevo sistema de archivos llamado JXFS capaz de soportar particiones en un terabyte de tamaño.
Los sistemas de archivos alternativos de otros fabricantes 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 que no se debe desmontar antes de volver a montarlo; y inteligente FileSystem que es un sistema de archivos con journaling que realiza actividades por diario durante inactividades del sistema, y ha sido elegido por MorphOS como su sistema de archivos estándar.

### Variantes oficiales de los sistemas de archivos Amiga.

Sistema de archivos antiguo / Sistema de archivos rápido
* OFS (DOS0)
* FFS (DOS1)
* OFS Internacional (DOS2)
* FFS Internacional (DOS3)
* OFS Directory Caching (DOS4)
* FFS Directory Caching (DOS5)
Fast File System 2 (AmigaOS4.x / MorphOS)
* OFS Nombres de archivo largos (DOS6)
* FFS nombres de archivo largos (DOS7)
Tanto DOS6 como DOS7 presentan nombres de archivos internacionales que aparecen en DOS2 y DO3, pero no en Directory Caching, que se abandonó debido a errores en la implementación original. DOS4 y DOS5 no se recomiendan para su uso por este motivo.
Todas las versiones nuevas son compatibles con versiones anteriores, pero no necesariamente compatibles con versiones posteriores. Un disco con formato DOS7 no se puede leer en Amiga FFS original, y un disco DOS3 no se puede leer en un Amiga KS1.3. Sin embargo, cualquier disco formateado con DOS0 usando FFS o FFS2 puede ser leído por cualquier versión del sistema operativo Amiga. Por esta razón, DOS0 solía ser el formato de elección de los desarrolladores de software que distribuyen en disquetes, excepto cuando se usaba un sistema de archivos personalizado y un bloque de arranque, una práctica común en los juegos de Amiga. Donde el software necesitaba AmigaOS 2 de todos modos, generalmente se usaba DOS3.

### Complementos Fast File System 2

Con la "actualización de AmigaOS 4.0 de julio de 2007" en 2007, se lanzaron los dos primeros complementos para FFS2:
* fs_plugin_cache : aumenta el rendimiento de FFS2 al introducir un nuevo método de almacenamiento de datos en búfer.
* fs_plugin_encrypt : complemento de cifrado de datos para particiones que utilizan el algoritmo Blowfish.

## Extensiones de nombre de archivo

AmigaDOS solo tiene una única extensión de nombre de archivo obligatoria: ".info", que debe adjuntarse 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 iconos también registra los metadatos del programa, como las opciones y las palabras clave, su propia posición en el escritorio (AmigaOS puede "crear instantáneas" de los iconos en lugares definidos por el usuario) y otra información sobre el archivo. El tamaño de la ventana del directorio y la información de posición se almacenan en el archivo ".info" asociado con el directorio, y la información del icono del disco se almacena en "Disk.info" en la raíz del volumen.
Con la excepción de los iconos, el sistema Amiga no identifica los tipos de archivos con extensiones, sino que examinará el icono asociado con un archivo o el encabezado binario del archivo para determinar el tipo de archivo.