Apple DOS (aka DOS 3.x) – ОС для микрокомпьютеров Apple II (с 1978 по 1983 года) написанная на языке ассемблера 6502. У Apple DOS было три ключевых версии: 3.1, 3.2 и 3.3, за каждой из которых следовал «безымянный лайт-баг-фикс» релиз (только в случае DOS 3.2 такой релиз получил собственный номер версии – 3.2.1).
Особенности и возможности
- Поддержка имён файлов длиной до 30 любых символов.
- Строгая типизация файлов – каждый файл мог иметь один из типов: «A» (Applesoft BASIC), «B» (двоичный), «I» (Integer BASIC), «T» (текстовый). В зависимости от типа, к файлу могли быть применены разные операции. Изменить тип существующего файла невозможно. Зарезервированные типы: «R», «S», «дополнительный A», «дополнительный B».
- Штатно Apple DOS была рассчитана на работу только с устройством Disk II (для 5″ односторонних дискет ёмкостью 140 килобайт). Так как физически дискета имела две рабочие стороны, то её можно было вынуть из дисковода и вставить обратно другой стороной – таким образом, каждая дискета логически представляла собой два отдельных 140-килобайтных диска. Диски разбивались на 35 дорожек по 13 секторов (16 в финальной версии) размером 256 байт. Диск имел один каталог, который, вместе с таблицей свободного пространства, размещался на зарезервированной (по середине диска) для этого 14(17)-й дорожке. В трёх первых дорожках диска размещалась сама Apple DOS (если дискета была загрузочной). В каталоге для каждого файла хранилась информация о его имени, типе, флаг защиты от записи, номер первого сектора (где находился общий список занимаемых файлом секторов и, при необходимости, мог продолжаться в других секторах) и размер файла в секторах.
- Одновременно могло быть установлено несколько дисков в различных устройствах Disk II (которые идентифицировались по номерам слотов на материнской плате и разъёмов на этих слотах).
- Каждый диск в Apple DOS имел так «номер тома» (однобайтное число, по умолчанию 254). В командах работы с файлами можно было указывать специальный параметр для проверки того, что в дисководе установлен диск с нужным номером (если номер не совпадал, команда завершалась с ошибкой). На практике эта идея не получила развития, т.к. практически все диски имели «номер по умолчанию». При активации сетевой карты (её микрокод модифицировал ОС загруженную в память) появлялась возможность обращаться к дискам на компьютерах в сети, используя «номер тома» в качестве идентификатора сетевой карты удаленного компьютера.
- Для Apple DOS имелись расширения, позволяющие использовать дополнительную память в качестве виртуального диска. При том, что содержимое этих дисков не терялось даже при перезапуске компьютера (без отключения питания) – это было удобно при работе в сети на компьютерах без дисков.
- В Apple II не было системных часов – время и дата в Apple DOS никак не отслеживались.
- У Apple DOS нет собственного командного процессора, поэтому использование командной строки выглядит как расширение набора команд интерпретатора языка Бейсик, зашитого в ПЗУ Apple II.
- Вся система Apple DOS полностью загружалась в оперативную память и постоянно там находилась во время своей работы (т.е. системный диск был нужен только для начальной загрузки). Даже для создания нового системного диска (командой INIT, при условии отсутствия расширений ОС) достаточно было только загруженного в оперативную память кода Apple DOS.
- Расширения Apple DOS практически не конфликтовали друг с другом, но были случаи краха ОС при активации сетевой карты из-за наличия компьютерного вируса (который «прятался» в том же участке памяти, что и расширение сетевой карты).
Работа с накопителем
Одним из самых объёмных и сложных модулей Apple DOS была подпрограмма RWTS (Read/Write Track and Sector), предоставлявшая интерфейс для чтения-записи сектора и форматирования дорожки дисководом Disk II. Сложность RWTS была обусловлена тем, что Disk II оснащался интерфейсом очень низкого уровня (настолько, что даже кодирование и декодирование отдельных битов и синхронизация данных на дорожке диска должна выполняться программно).
Клоны Apple DOS
Для Apple DOS (преимущественно 3.3) было создано большое количество клонов, полученных путём реверс-инжиниринга и внесения тех или иных правок (от незначительных вроде замены названия системы, до весьма нетривиальных – ускорения работы с диском, реализации дополнительных типов файлов или дополнительных команд и т. п.).
Один из самых «крутых» клонов – Eagle Software GraphExt 2.x и его «нереально крутой» русифицированный вариант Eagle & Space Soft QDOS 2.A от Space Soft, который, в частности, поддерживал работу со сжатыми графическими файлами (тип «G», он же «дополнительный B», команды GSAVE, GLOAD) и с файлами перемещаемого объектного кода (тип «R», команда RLOAD), а также команды для ввода с консоли и вывода на консоль содержимого текстовых файлов (MAKE, TYPE), отсутствовавшие в базовой Apple DOS.
Набор команд Apple DOS
- CATALOG – выдача каталога диска;
- DELETE, LOCK, RENAME, UNLOCK, VERIFY – управление файлами;
- INIT – запись копии Apple DOS из памяти на диск и установка файла автозапуска;
- APPEND, CLOSE, OPEN, POSITION, READ, WRITE – работа с текстовыми файлами;
- EXEC – исполнение команд из текстового файла;
- LOAD, RUN, SAVE – загрузка, исполнение и сохранение файлов на Бейсике;
- BLOAD, BRUN, BSAVE – загрузка, исполнение и сохранение двоичных файлов;
- FP, INT – переключение между интерпретаторами Applesoft BASIC и Integer BASIC;
- IN#, PR# – инициализация внешних устройств ввода и вывода;
- MON, NOMON – включение и выключение трассировки команд Apple DOS;
- MAXFILES – установка количества одновременно открытых файлов;
Открытие исходного кода
В 2013 году, т.е. спустя более 35 лет после выхода Apple II, исходный код Apple DOS был открыт на сайте Музея компьютерной истории.