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 o Presionar o cualquier carácter de impresión en el teclado 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).
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):
= 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. ) = 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 . = 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. ) = Archivo (bit archivado, utilizado por varios programas de copia de seguridad para indicar que se ha realizado una copia de seguridad de un archivo) = Leer (Permiso para leer el archivo, enlace o contenido del directorio) = Escribir (Permiso para escribir el archivo, enlace o dentro de un directorio) = 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. ) = Eliminar (Permiso para eliminar el archivo, enlace o directorio)
El bit 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 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 .
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.