Введение

AmigaDOS — это дисковая операционная система AmigaOS, включающая файловые системы, операции с файлами и каталогами, интерфейс командной строки и перенаправление файлов. В AmigaOS 1.x AmigaDOS основана на порте TRIPOS от MetaComCo, написанном на BCPL. BCPL не использует собственные указатели, поэтому реализация более продвинутых функций операционной системы была сложной и подвержена ошибкам. Проект сторонних разработчиков AmigaDOS Resource Project (ARP, ранее AmigaDOS Replacement Project), начатый разработчиком Amiga Чарли Хитом, заменил многие утилиты BCPL на более компактные и сложные аналоги, написанные на C и ассемблере, и предоставил оберточную библиотеку arp.library. Это устранило проблемы совместимости в приложениях, автоматически выполняя преобразования из нативных указателей (например, используемых в C или ассемблере) в эквиваленты BCPL и обратно для всех функций AmigaDOS. Начиная с AmigaOS 2.x, AmigaDOS была переписана на C, с сохранением совместимости с 1.x, где это возможно. Начиная с AmigaOS 4, AmigaDOS отказалась от использования BCPL. Начиная с AmigaOS 4.1, AmigaDOS была расширена поддержкой 64-битного доступа к файлам.

Консоль

Консоль Amiga – стандартное виртуальное устройство Amiga, обычно назначаемое CON: и управляемое обработчиком консоли (console.handler). Она была разработана на основе примитивного интерфейса в AmigaOS 1.1 и стала стабильной в версиях 1.2 и 1.3, когда получила название AmigaShell, а её исходный обработчик был заменен на newconsole.handler (NEWCON:). Консоль обладает различными функциями, которые считались передовыми на момент её создания в 1985 году, такими как справка по шаблонам команд, перенаправление в "пустоту" ("NIL:") и ANSI-терминал с цветным отображением. Новый обработчик консоли, реализованный в версии 1.2, предоставляет расширенные возможности, такие как история команд, конвейеры и автоматическое создание файлов при перенаправлении вывода. С появлением в начале 1990-х годов TCP/IP-стеков, таких как AmiTCP, консоль также могла принимать перенаправление от сетевых устройств Amiga (например, TCP:). В отличие от других систем, выпущенных в середине 1980-х годов, AmigaDOS не использует проприетарный набор символов; разработчики предпочли стандарт ANSI–ISO ISO 8859-1 (Latin 1), включающий набор символов ASCII. Как и в системах Unix, консоль Amiga принимает только символ перевода строки ("LF") в качестве символа конца строки ("EOL"). Консоль Amiga поддерживает символы с диакритическими знаками, а также символы, создаваемые комбинациями "мёртвых клавиш" на клавиатуре.

Команды прерывания и вывода консоли паузы

Пользователь может завершить программу, вызвав комбинацию клавиш или нажав любую печатаемую клавишу на клавиатуре, что приостановит вывод в консоль. Вывод можно возобновить, нажав клавишу (для удаления всего ввода) или клавишу (что приведет к обработке ввода как команды, как только текущая команда завершит работу).

Чувствительность к случаю

AmigaDOS в общем случае не чувствителен к регистру. Указание устройства как "Dh0:", "DH0:" или "dh0:" всегда относится к одному и тому же разделу; однако для имен файлов и каталогов это зависит от файловой системы, и некоторые файловые системы позволяют включить чувствительность к регистру флагом при форматировании. Примером такой файловой системы является Smart File System. Это очень удобно при работе с программным обеспечением, портированным из мира Un*x, где регистр обычно учитывается, но может вызывать путаницу у нативных Amiga-приложений, которые предполагают, что регистр не имеет значения. Поэтому опытные пользователи обычно используют флаг чувствительности к регистру только для файловых систем, используемых для программного обеспечения, созданного в Un*x. Изменение регистра имен файлов, каталогов и томов разрешено обычными средствами; команды "rename foo Foo" и "relabel Bar: bAr:" допустимы и выполняют ожидаемые действия, в отличие, например, от Linux, где "mv foo Foo" на файловых системах, нечувствительных к регистру, таких как VFAT, приводит к сообщению об ошибке "mv: `foo' и `Foo' – один и тот же файл".

Названия томов

Разъемы и физические диски обычно обозначаются как DF0: (дисковод 0), DH0: (жесткий диск 0) и т. д. Однако, в отличие от многих операционных систем, помимо встроенных физических аппаратных устройств, таких как DF0: или HD0:, имена отдельных дисков, томов и разделов полностью произвольны: например, раздел жесткого диска может быть назван Work или System, или любым другим именем при его создании. Имена томов могут использоваться вместо соответствующих имен устройств, поэтому к разделу диска на устройстве DH0: с именем Workbench можно получить доступ либо по имени DH0:, либо Workbench:. Пользователи должны сообщать системе, что "Workbench" – это том "Workbench:", всегда вводя двоеточие ":" при вводе информации в форму запроса или в AmigaShell. Если имя запрашиваемого тома не найдено, операционная система предложит пользователю вставить диск с указанным именем тома или позволит отменить операцию. Кроме того, логические имена устройств можно установить с помощью команды "assign" для любого каталога или устройства; программы часто присваивают виртуальное имя тома своему каталогу установки (например, вымышленный текстовый процессор Writer может назначить Writer: каталогу DH0:Productivity/Writer). Это позволяет легко перемещать установленные программы. Имя по умолчанию SYS: используется для обозначения тома, с которого была загружена система. Предоставляются различные другие имена по умолчанию для обращения к важным системным расположениям, например, S: для стартовых скриптов, C: для команд AmigaDOS, FONTS: для установленных шрифтов и т. д. Назначение меток томов также может быть установлено для нескольких каталогов, которые будут рассматриваться как объединение их содержимого. Например, FONTS: может быть назначен SYS:Fonts, а затем расширен, чтобы включить, например, Work:UserFonts с помощью опции add команды AmigaDos assign. В этом случае система позволит использовать шрифты, установленные в любом из этих каталогов. Отображение содержимого FONTS: покажет файлы из обоих мест.

Конвенции по названиям и типичное поведение виртуальных устройств

Физическое устройство использует ту же механику дисковода, что и CrossDOS – виртуальное устройство, способное читать дискеты, отформатированные для PC. Когда в дисковод вставляется дискета, отформатированная для PC, иконка дисковода Amiga изменится, показывая, что диск не распознается стандартным устройством Amiga, и отобразит четыре вопросительных знака в качестве стандартного имени тома "неизвестный", в то время как появится иконка, отображающая имя дискеты, отформатированной для PC. При замене дискеты на дискету, отформатированную для Amiga, поведение изменится на обратное.

Файловые системы

AmigaDOS поддерживает различные файловые системы и их варианты. Первая файловая система называлась просто Amiga FileSystem и была предназначена главным образом для гибких дисков, поскольку она не поддерживала автоматическую загрузку с жестких дисков (на гибких дисках загрузка осуществлялась с использованием кода из загрузочного сектора). Вскоре она была заменена FastFileSystem (FFS), и, соответственно, оригинальная файловая система стала известна как "Старая" файловая система (OFS). FFS была более эффективна с точки зрения использования дискового пространства и заметно быстрее, чем OFS, что и отразилось в названии. С AmigaOS 2.x, FFS стала официальной частью ОС и вскоре была расширена для поддержки кэшированных разделов, международных разделов, позволяющих использовать диакритические знаки в именах файлов и разделов, и, наконец (с MorphOS и AmigaOS 4) длинных имен файлов, до 108 символов (вместо 31). И AmigaOS 4.x, и MorphOS включали новую версию FFS под названием FastFileSystem 2. FFS2 включала в себя все функции оригинального FFS, включая, по словам ее автора, "некоторые незначительные изменения". Для обеспечения обратной совместимости не было внесено существенных структурных изменений. (Однако FF2 в AmigaOS 4.1 отличается тем, что может расширять свои функции и возможности с помощью плагинов). Как и в случае с FFS2, версии Smart FileSystem для AmigaOS 4 и MorphOS являются ответвлениями от оригинальной SFS и не полностью совместимы с ней. Другие файловые системы, такие как FAT12, FAT16, FAT32 из Windows или ext2 из Linux, доступны через легко устанавливаемые (перетаскиванием) системные библиотеки или сторонние модули, такие как FAT95 (с поддержкой чтения и записи), которые можно найти в репозитории программного обеспечения Aminet. MorphOS 2 имеет встроенную поддержку файловых систем FAT. AmigaOS 4.1 приняла новую файловую систему под названием JXFS, способную поддерживать разделы объемом более одного терабайта. Альтернативные файловые системы от сторонних производителей включают Professional FileSystem, которая имеет простую структуру, основанную на метаданных, обеспечивающую высокую внутреннюю согласованность, способную к дефрагментации "на лету" и не требующую размонтирования перед повторным монтированием; и Smart FileSystem, которая является журнальной файловой системой, выполняющей операции журналирования во время простоя системы, и которая была выбрана MorphOS в качестве стандартной файловой системы.

Плагины FastFileSystem2

С июльским обновлением AmigaOS 4.0 в 2007 году были выпущены первые два плагина для FFS2: fs plugin cache: повышает производительность FFS2, внедряя новый метод буферизации данных. fs plugin encrypt: плагин для шифрования данных на разделах с использованием алгоритма Blowfish.

Расширения имен файлов

AmigaDOS имеет только одно обязательное расширение имени файла: ".info", которое должно быть добавлено к имени файла каждой иконки. Если существует файл с именем myprog, то файл его иконки должен называться myprog.info. Помимо данных изображения, файл иконки также содержит метаданные программы, такие как опции и ключевые слова, собственное положение на рабочем столе (AmigaOS может сохранять иконки в местах, определенных пользователем), и другую информацию о файле. Информация о размере и положении окон каталога хранится в файле ".info", связанном с каталогом, а информация об иконке диска хранится в файле "Disk.info" в корневом каталоге. За исключением иконок, система Amiga не определяет типы файлов по расширениям, а вместо этого проверяет либо иконку, связанную с файлом, либо двоичный заголовок самого файла, чтобы определить его тип.