AmigaDOS — это дисковая операционная система AmigaOS , которая включает в себя файловые системы , работу с файлами и каталогами, интерфейс командной строки и перенаправление файлов .
В AmigaOS 1.x AmigaDOS основана на порте TRIPOS от MetaComCo , написанном на BCPL . BCPL не использует собственные указатели , поэтому более продвинутые функции операционной системы было сложно использовать и они были подвержены ошибкам. Сторонний проект AmigaDOS Resource Project [1] (ARP, ранее AmigaDOS Replacement Project ), [2] проект, начатый разработчиком 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 году, такие как справка по шаблону команды, перенаправление на null (" NIL: ") и цветной терминал ANSI . Новый обработчик консоли, который был реализован в версии 1.2, позволяет использовать гораздо больше функций, таких как история команд , конвейеры и автоматическое создание файлов при перенаправлении вывода . Когда в начале 1990-х были выпущены стеки TCP/IP , такие как AmiTCP, консоль также могла получать перенаправление от обработчиков устройств Amiga с поддержкой Интернета (например, TCP:, копировать файл в TCP:Site/Port ).
В отличие от других систем, изначально запущенных в середине 1980-х годов, AmigaDOS не реализует собственный набор символов; разработчики решили использовать стандарт ANSI –ISO ISO-8859-1 (Latin 1) , который включает набор символов ASCII . Как и в системах Unix , консоль Amiga принимает только символ перевода строки (" LF ") в качестве символа конца строки (" EOL "). Консоль Amiga поддерживает символы с ударением , а также символы, созданные комбинациями "мертвых клавиш" на клавиатуре.
Это пример типичного синтаксиса команды AmigaDOS:
AmigaDOS может перенаправлять вывод команды в файлы, каналы, принтер, нулевое устройство и другие устройства Amiga.
Команды AmigaDOS должны предоставлять стандартный «шаблон», описывающий аргументы, которые они могут принимать. Это может использоваться как базовая функция «справки» для команд, хотя сторонние обработчики и оболочки для замены консоли , такие как Bash или Zshell (портированные из Unix ), или KingCON часто предоставляют более подробную справку для встроенных команд.
При запросе шаблона для команды « Копировать » получается следующий вывод:
Прочитав этот шаблон, пользователь может узнать, что для команды приемлем следующий синтаксис:
Пользователь может завершить программу, вызвав комбинацию клавиш Ctrl+ Cили + . Нажатие или любого печатного символа на клавиатуре приостанавливает вывод консоли. Вывод может быть возобновлен нажатием клавиши (чтобы удалить весь ввод) или нажатием (что приведет к обработке ввода как команды, как только текущая команда прекратит выполняться).CtrlDspace← Backspace↵ Enter
Как и другие операционные системы, AmigaDOS также предоставляет подстановочные знаки , которые заменяют любой символ или любую последовательность случайных символов в строке. Вот пример подстановочных знаков в командах AmigaDOS:
Синтаксический анализ этого выглядит следующим образом. Подстановочный знак "?" указывает на "любой символ". Префикс "#" указывает на "любое количество повторений". Это можно рассматривать как аналог регулярного выражения ".*".
AmigaDOS также имеет функцию пакетного программирования, которое называется "сценарным" программированием, и имеет ряд команд, таких как Echo
, If
, Then
, EndIf
, Val
, и Skip
для работы со структурированным программированием сценариев. Скрипты представляют собой текстовые файлы и могут быть созданы с помощью внутреннего текстового редактора AmigaDOS, называемого Ed (не связанного с Ed в Unix ), или с помощью любого другого стороннего текстового редактора. Для вызова программы сценария AmigaDOS использует команду Execute
.
1> Выполнить мой скрипт
Это запустит скрипт под названием «myscript».
Этот метод выполнения скриптов держит консольное окно занятым, пока скрипт не завершит запланированную работу. Пользователи не могут взаимодействовать с консольным окном, пока скрипт не завершится или пока они не прервут его.
Пока:
1> Запустить Выполнить myscript
Команда AmigaDOS Run
выполняет любую команду DOS или любую программу и оставляет консоль свободной для дальнейшего ввода.
Биты защиты — это флаги, которые файлы, ссылки и каталоги имеют в файловой системе. Чтобы изменить их, можно использовать команду Protect или использовать пункт Information из меню Icons в Workbench для выбранных файлов. AmigaDOS поддерживает следующий набор битов защиты (сокращенно HSPARWED):
Execute
.Бит H часто ошибочно понимается как «Скрыть». В Smart File System (SFS) файлы и каталоги с установленным битом H скрыты от системы. Доступ к скрытым файлам все еще возможен, но они не отображаются ни в одном списке каталогов.
Демонстрация H-bit в действии:
AmigaPrompt> какой списокВерстак:C/СписокAmigaPrompt> список верстак:c/listКаталог "workbench:c" в четверг 30-окт-08список 6464 --p-rwed 25 февраля 2002 г. 22:30:001 файл - 14 использованных блоковAmigaPrompt> какой списокВерстак:C/СписокAmigaPrompt> защитить рабочее место:c/list +h AmigaPrompt> какой списокВерстак:C/СписокAmigaPrompt> список верстак:c/listКаталог "workbench:c" в четверг 30-окт-08список 6464 hp-rwed 25 февраля 2002 22:30:001 файл - 14 использованных блоковAmigaPrompt> какой списокСписок ВИЭ
Как и любая другая DOS, Amiga имеет дело с переменными окружения , используемыми в пакетном программировании.
Существуют как глобальные, так и локальные переменные, и они обозначаются знаком доллара перед именем переменной, например $myvar . Глобальные переменные доступны в масштабах всей системы; локальные переменные действительны только в текущей оболочке. В случае конфликта имен локальные переменные имеют приоритет над глобальными переменными. Глобальные переменные можно задать с помощью команды SetEnv , в то время как локальные переменные можно задать с помощью команды Set . Также существуют команды GetEnv и Get , которые можно использовать для вывода глобальных и локальных переменных.
Приведенные ниже примеры демонстрируют простое использование:
1> setenv foo blapp 1> echo $foo blapp 1> set foo bar 1> echo $foo bar 1> getenv foo blapp 1> get foo bar 1> type ENV:foo blapp 1> setenv save foo $foo 1> type ENV:foo bar 1> type ENVARC:foo bar
Глобальные переменные хранятся в виде файлов в ENV: и при необходимости сохраняются на диске в ENVARC: для сохранения после перезагрузки и выключения питания . ENV: по умолчанию назначается в RAM:Env, а ENVARC: назначается в SYS:Prefs/Env-archive, где SYS: относится к загрузочному устройству . При загрузке содержимое ENVARC: копируется в ENV: для обеспечения доступности.
При программировании скриптов AmigaDOS следует помнить, что глобальные переменные являются общесистемными. Все внутренние переменные скрипта должны быть установлены с использованием локальных переменных, иначе есть риск конфликтов из-за глобальных переменных между скриптами. Кроме того, глобальные переменные требуют доступа к файловой системе, что обычно делает их доступными медленнее, чем локальные переменные.
Поскольку ENVARC: также используется для хранения других системных настроек, а не только строковых переменных (таких как системные настройки, значки по умолчанию и т. д.), со временем он имеет тенденцию разрастаться, и копирование всего в ENV:, расположенный на RAM-диске, становится дорогим. Это привело к альтернативным способам настройки ENV: с помощью выделенных обработчиков RAM-диска , которые копируют файлы из ENVARC: только тогда, когда они запрашиваются. Примерами таких обработчиков являются [4] и. [5]
Примером, демонстрирующим творческое злоупотребление глобальными переменными, а также Lab и Skip, является AmigaDOS-вариант печально известного GOTO . [6]
AmigaDOS в целом нечувствительна к регистру . [7] Обозначение устройства как "Dh0:", "DH0:" или "dh0:" всегда относится к одному и тому же разделу ; однако для имен файлов и каталогов это зависит от файловой системы, и некоторые файловые системы допускают чувствительность к регистру в качестве флага при форматировании. Примером такой файловой системы является Smart File System . Это очень удобно при работе с программным обеспечением, перенесенным из мира Un*x , в котором в основном учитывается регистр , но вызывает много путаницы для собственных приложений Amiga, которые предполагают нечувствительность к регистру. Поэтому опытные пользователи обычно используют флаг чувствительности к регистру только для файловых систем, используемых для программного обеспечения, происходящего из Un*x.
Изменение регистра имен файлов, каталогов и томов допускается с использованием обычных методов; команды «rename foo Foo» и «relabel Bar: bAr:» являются допустимыми и выполняют именно то, что от них ожидается, в отличие, например, от Linux , где «mv foo Foo» приводит к сообщению об ошибке «mv: `foo' и `Foo' — это один и тот же файл» в файловых системах, нечувствительных к регистру, таких как VFAT .
Разделы и физические диски обычно обозначаются как 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: будут показаны файлы из обоих расположений.
Физическое устройство DF0: использует ту же механику дисковода гибких дисков, что и PC0:, виртуальное устройство CrossDOS, способное читать дискеты, отформатированные на ПК. Когда в дисковод вставляется дискета, отформатированная на ПК, значок дискеты Amiga DF0: изменится, указав, что диск неизвестен обычному устройству Amiga, и на нем будут отображаться четыре вопросительных знака ???? в качестве стандартного имени тома «неизвестно», в то время как значок PC0: будет показывать имя диска, отформатированного на ПК. Любое изменение диска с дисками, отформатированными на Amiga, приведет к инвертированию этого поведения.
AmigaDOS поддерживает различные файловые системы и варианты. Первая файловая система называлась просто Amiga FileSystem и подходила в основном для дискет, поскольку не поддерживала автоматическую загрузку с жестких дисков (на дискетах загрузка производилась с помощью кода из загрузочного блока). Вскоре ее заменила FastFileSystem (FFS), и поэтому исходная файловая система была известна под названием «Old» FileSystem (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 и не на 100% совместима с ней.
Другие файловые системы, такие как FAT12 , FAT16 , FAT32 из Windows или ext2 из Linux, доступны через легко устанавливаемые ( перетаскиваемые ) системные библиотеки или сторонние модули, такие как FAT95 [8] (имеет поддержку чтения/записи), которые можно найти в репозитории программного обеспечения Aminet . MorphOS 2 имеет встроенную поддержку файловых систем FAT.
В AmigaOS 4.1 реализована новая файловая система JXFS, способная поддерживать разделы размером более терабайта .
Альтернативные файловые системы от сторонних производителей включают Professional FileSystem — файловую систему с простой структурой, основанную на метаданных , обеспечивающую высокую внутреннюю согласованность, способную дефрагментировать себя «на лету» и не требующую размонтирования перед повторным монтированием ; а также Smart FileSystem — журналируемую файловую систему, которая выполняет журналируемые действия во время бездействия системы и была выбрана MorphOS в качестве стандартной файловой системы.
Старая файловая система / Быстрая файловая система
Быстрая файловая система 2 (AmigaOS4.x/MorphOS)
И DOS6, и DOS7 поддерживают международные имена файлов, как в DOS2 и DO3, но не кэширование каталогов, от которого отказались из-за ошибок в оригинальной реализации. По этой причине DOS4 и DOS5 не рекомендуются к использованию.
Dostypes обратно совместимы друг с другом, но не совместимы вперед . Диск, отформатированный в DOS7, не может быть прочитан на оригинальной Amiga FFS, а диск DOS3 не может быть прочитан на Amiga KS1.3. Однако любой диск, отформатированный в DOS0 с использованием FFS или FFS2, может быть прочитан любой версией операционной системы Amiga. По этой причине DOS0, как правило, был форматом выбора разработчиков программного обеспечения, распространяемого на дискетах, за исключением случаев, когда использовались пользовательская файловая система и загрузочный блок — обычная практика в играх Amiga. Там, где программному обеспечению в любом случае требовалась AmigaOS 2, обычно использовался DOS3.
С обновлением AmigaOS 4.0 в июле 2007 года были выпущены первые два плагина для FFS2:
AmigaDOS имеет только одно обязательное расширение имени файла: ".info", которое должно быть добавлено к имени файла каждой иконки. Если существует файл с именем myprog , то его файл иконки должен называться myprog.info . Помимо данных изображения, файл иконки также записывает метаданные программы , такие как параметры и ключевые слова, собственное положение на рабочем столе (AmigaOS может "сделать снимок" значков в местах, определенных пользователем), и другую информацию о файле. Информация о размере и положении окна каталога хранится в файле ".info", связанном с каталогом, а информация о значке диска хранится в "Disk.info" в корне тома.
За исключением значков, система Amiga не идентифицирует типы файлов с помощью расширений, а вместо этого проверяет либо значок, связанный с файлом, либо двоичный заголовок самого файла, чтобы определить тип файла.