Apple DOS — дисковая операционная система для компьютеров Apple II с конца 1978 по начало 1983 года. В 1983 году ее заменила ProDOS. У Apple DOS есть три основных выпуска: DOS 3.1, DOS 3.2 и DOS 3.3; за каждым из этих трех выпусков следовал второй, незначительный выпуск с «исправлением ошибок», но только в случае Apple DOS 3.2 этот незначительный выпуск получил свой собственный номер версии, Apple DOS 3.2.1. Самой известной и наиболее используемой версией является Apple DOS 3.3 в выпусках 1980 и 1983 годов. До выпуска Apple DOS 3.1 пользователям Apple приходилось полагаться на аудиокассеты для хранения и извлечения данных.
Когда Apple Computer представила Apple II в апреле 1977 года, новый компьютер не имел ни дисковода, ни дисковой операционной системы (DOS). Хотя соучредитель Apple Стив Возняк разработал контроллер Disk II в конце того же года и считал, что он мог бы написать DOS, его соучредитель Стив Джобс решил передать эту задачу на аутсорсинг. Компания рассматривала возможность использования CP/M от Digital Research , но Возняк искал операционную систему, которая была бы проще в использовании. 10 апреля 1978 года Apple подписала контракт на 13 000 долларов с Shepardson Microsystems на написание DOS и поставку ее в течение 35 дней. Apple предоставила подробные спецификации, и ранний сотрудник Apple Рэнди Виггинтон тесно сотрудничал с Полом Лотоном из Shepardson, поскольку последний написал операционную систему с помощью перфокарт и мини-компьютера . [2]
Не было Apple DOS 1 или 2. Версии с 0.1 по 2.8 были последовательно пронумерованными ревизиями во время разработки, которые также могли называться сборками с 1 по 28. Apple DOS 3.0, переименованный выпуск версии 2.8, никогда не был публично выпущен из-за ошибок. Apple не публиковала официальной документации до выпуска 3.2. [3] [4]
Apple DOS 3.1 была публично выпущена в июне 1978 года, чуть больше чем через год после появления Apple II, став первой дисковой операционной системой для любого компьютера Apple. Позже вышел релиз с исправлением ошибок, решающий проблему с помощью своей MASTER CREATE
утилиты, которая использовалась для создания главных (загрузочных) дисков Apple DOS: встроенная INIT
команда создавала диски, которые можно было загрузить только на машинах с по крайней мере таким же объемом памяти, как у той, которая их создала. MASTER CREATE
включает в себя самоперемещающуюся версию DOS, которая загружается на Apple с любой конфигурацией памяти.
Apple DOS 3.2 был выпущен в 1979 году, чтобы отразить изменения в методах загрузки компьютеров, которые были встроены в преемника Apple II, Apple II Plus. Новая прошивка включала функцию автозапуска, которая автоматически находила контроллер диска и загружалась с него при включении системы, за что и получила название «Autostart ROM ». [ необходима цитата ] DOS 3.2.1 был выпущен в июле 1979 года с некоторыми незначительными исправлениями ошибок. [5]
Apple DOS 3.3 был выпущен в 1980 году. Он улучшает различные функции [ какие? ] версии 3.2, одновременно обеспечивая большой прирост доступного хранилища на дискетах . Новые ПЗУ P5A/P6A в контроллере диска позволяют считывать и записывать данные с более высокой плотностью, поэтому на дорожке можно хранить 16 секторов (4 КиБ) вместо 13 секторов (3,25 КиБ ), увеличивая емкость со 113,75 КБ до 140 КБ на сторону — 16 КБ из которых используются файловой системой и копией DOS, оставляя 124 КБ для пользовательских программ и данных. Однако DOS 3.3 не является обратно совместимой ; она не может читать или записывать диски DOS 3.2. Чтобы решить эту проблему, Apple Computer выпустила «MUFFIN», утилиту для переноса файлов и программ Apple DOS 3.2 на диски версии 3.3. Apple никогда не предлагала утилиту для копирования в обратном направлении. Для переноса файлов Apple DOS 3.3 обратно на диски версии 3.2 кто-то написал утилиту "NIFFUM". Существуют также коммерческие утилиты (например, Copy II Plus ), которые могут копировать файлы между любым форматом (и в конечном итоге ProDOS ). Выпуск 3.3 также улучшает возможность переключения между Integer BASIC и Applesoft BASIC, если на компьютере есть языковая карта ( расширение RAM ) или карта прошивки.
Диски Apple DOS 3.1 используют 13 секторов данных на дорожку, каждый сектор составляет 256 байт . Он использует 35 дорожек на каждой стороне диска и может получить доступ только к одной стороне дискеты, если только пользователь не перевернул диск . Это дает пользователю общую емкость хранения 113,75 КБ на сторону, из которых около 10 КБ используются для хранения самого DOS и каталога диска, оставляя около 100 КБ для пользовательских программ.
Первый уровень операционной системы называется RWTS, что означает «read/write track sector» (сектор трека чтения/записи). Этот уровень состоит из подпрограмм для поиска треков, чтения и записи секторов и форматирования диска. API, называемый File Manager, был построен поверх этого и реализует функции для открытия, закрытия, чтения, записи, удаления, блокировки (т. е. защиты от записи ), разблокировки (т. е. разрешения записи) и переименования файлов, а также для проверки структурной целостности файла. Также есть CATALOG
функция для перечисления файлов на дискете и INIT
функция, которая форматирует диск для использования с DOS, сохраняя копию DOS на первых трех дорожках и сохраняя программу запуска (обычно называемую HELLO), которая автоматически запускается при загрузке с этого диска. Поверх API File Manager реализованы основные процедуры DOS, которые подключаются к интерпретатору BASIC машины и перехватывают все команды диска. Он предоставляет BLOAD , BSAVE и BRUN для хранения, загрузки и запуска двоичных исполняемых файлов . LOAD
, RUN
, и SAVE
предусмотрены для программ BASIC, а также EXEC
был предусмотрен для запуска текстовых пакетных файлов , состоящих из команд BASIC и DOS. Наконец, существует четыре типа файлов, идентифицируемых буквами в списке каталога:
Существует четыре дополнительных типа файлов: "R", "S" и дополнительные "A" и "B", ни один из которых не поддерживается полностью. DOS распознает эти типы только для списков каталогов, и нет прямых способов манипулировать этими типами файлов. Тип "R" нашел некоторое применение для перемещаемых двоичных исполняемых файлов. Несколько программ поддерживают тип "S" как файлы данных.
Таблица векторов вызовов в области $03D0–03FF 16 позволяет программам находить DOS, где бы она ни была загружена в системной памяти. Например, если DOS, подключенный к BASIC CLI , перестает функционировать, ее можно повторно инициализировать, вызвав местоположение $03D0 16 (976 10 ) – отсюда и традиционная 3D0G
команда ("3D0 go") для возврата в BASIC из System Monitor .
Процесс загрузки Apple DOS включает в себя ряд очень маленьких программ, каждая из которых продвигает процесс загрузки вперед на несколько шагов, прежде чем передать управление следующей программе в цепочке.
PR#6
(из BASIC). Когда монитор или BASIC выдавали следующий символ приглашения, компьютер вызывал процедуры ПЗУ на карте диска для «печати» на нее, что затем продолжало последовательность загрузки. (Можно было использовать перенаправление ввода для аналогичных целей.) В качестве альтернативы, из монитора ML пользователь мог вызвать загрузочный код контроллера напрямую с помощью команды типа C600G
.Оригинальный Apple II включал интерпретатор BASIC в ПЗУ, изначально известный как Apple BASIC , а позже как Integer BASIC . Переменные в этом языке могут обрабатывать только целые числа в диапазоне от −32 768 до +32 767 ( 16-битные двоичные значения); числа с плавающей точкой не поддерживаются. Apple поручила Microsoft разработать Applesoft BASIC , [6] способный обрабатывать числа с плавающей точкой. Applesoft BASIC не может запускать программы Integer BASIC, из-за чего некоторые пользователи сопротивляются обновлению до него.
DOS 3.3 был выпущен, когда Applesoft BASIC был стандартным в ПЗУ на Apple II Plus, поэтому Apple разработала его для поддержки переключения между двумя интерпретаторами BASIC. Integer BASIC загружается в ОЗУ на языковой карте Apple II (если она есть), и, набрав FP
или INT
из BASIC, пользователь может переключаться между версиями.
После 1980 года Apple DOS вступила в состояние стагнации, поскольку Apple сосредоточила свои усилия на злополучном компьютере Apple III и его операционной системе SOS . Еще две версии Apple DOS, обе по-прежнему называвшиеся DOS 3.3, но с некоторыми исправлениями ошибок и лучшей поддержкой новой модели Apple IIe , были выпущены в начале и середине 1983 года.
Без сторонних патчей Apple DOS может читать только дискеты, работающие в 5,25-дюймовом приводе Disk II, и не может получить доступ к другим носителям, таким как жесткие диски, виртуальные RAM- дисководы или 3,5-дюймовые дисководы . Структура дисков Apple DOS (в частности, карта свободных секторов, которая была ограничена частью одного сектора) такова, что невозможно иметь более 400 КБ, доступных одновременно на диске, без существенной переписывания почти всех разделов кода; это главная причина, по которой Apple отказалась от этой итерации DOS в 1983 году, когда Apple DOS была полностью заменена ProDOS .
ProDOS сохраняет 16-секторный низкоуровневый формат DOS 3.3 для 5,25-дюймовых дисков, но вводит новый высокоуровневый формат, подходящий для устройств объемом до 32 МБ ; это делает его пригодным для жестких дисков той эпохи и 3,5-дюймовых дискет . Все компьютеры Apple, начиная с II Plus, могут работать как с DOS 3.3, так и с ProDOS, для Plus требуется расширение памяти «Language Card» для использования ProDOS; модели e и более поздние имеют встроенное аппаратное обеспечение Language Card, поэтому могут напрямую запускать ProDOS. ProDOS включает программное обеспечение для копирования файлов с дисков Apple DOS. Однако многие люди, которым не нужны были улучшения ProDOS (и которым не нравился его гораздо более высокий объем памяти ), продолжали использовать Apple DOS или один из его клонов еще долго после 1983 года. Соглашение Apple о хранении загрузочной ОС на каждой отдельной дискете означает, что коммерческое программное обеспечение может использоваться независимо от того, какой ОС владеет пользователь. Программа под названием DOS.MASTER позволяет пользователям иметь несколько виртуальных разделов DOS 3.3 на большем томе ProDOS, что позволяет использовать множество программ DOS на основе дискет с жестким диском.
Вскоре после выхода ProDOS компания Apple отозвала разрешение третьих сторон на распространение DOS 3.3, но предоставила одной компании, Syndicomm, эксклюзивную лицензию на перепродажу DOS 3.3. [7]
Коммерческие игры обычно не использовали Apple DOS, вместо этого имея собственные дисковые процедуры для защиты от копирования , а также для повышения производительности.
Процедура RWTS в DOS может считывать или записывать дорожку за два оборота с надлежащим чередованием . Сектор вращающегося диска проходит под головкой чтения/записи, пока процедура RWTS декодирует только что прочитанный сектор (или кодирует следующий для записи), и если этот пропущенный сектор является следующим необходимым сектором, DOS необходимо подождать почти целый оборот диска, чтобы сектор снова появился. Это называется «продувкой оборота» и является хорошо известным узким местом производительности в дисковых системах. Чтобы избежать этого, сектора на диске DOS располагаются в чередующемся порядке: [8]
0 7 д 6 г 5 в 4 б 3 а 2 9 1 8 е
Позже ProDOS расположил сектора в следующем порядке: [8]
0 8 1 9 2 а 3 б 4 в 5 г 6 д 7 е
При чтении и декодировании сектора 0 затем проходит сектор 8, так что сектор 1, следующий сектор, который, вероятно, понадобится, будет доступен без ожидания. При чтении сектора 7, два ненужных сектора, f и 0, проходят, прежде чем станет доступен сектор 8, а при чтении сектора 15 приводу всегда придется ждать дополнительный оборот для сектора 0 на той же дорожке. Однако сектор 0, который действительно нужен в большинстве случаев, будет находиться на следующей, более высокой дорожке, и эту дорожку можно расположить относительно последней, чтобы дать необходимое время для декодирования только что прочитанного сектора и перемещения головки до того, как появится сектор 0. В среднем, полная дорожка может быть прочитана за два оборота диска.
Ранний файловый менеджер DOS подорвал эту эффективность, копируя байты, считываемые или записываемые в файл, по одному за раз между буфером диска и основной памятью, что требовало больше времени и приводило к постоянным скачкам оборотов DOS при чтении или записи файлов. [9] Программы стали доступны довольно рано для форматирования дисков с измененным чередованием секторов; эти диски дают DOS больше времени между секторами для копирования данных, что решает проблему.
Позже программисты вне Apple переписали процедуры File Manager, чтобы избежать создания дополнительной копии для большинства секторов файла; RWTS было поручено считывать или записывать секторы напрямую в или из основной памяти, а не из буфера диска, когда нужно было передать полный сектор. Ранний патч для предоставления этой функциональности был опубликован в Call-APPLE . Ускорения в LOAD
команде в три-пять раз были типичными.
Эта функциональность вскоре появилась в коммерческих продуктах, таких как Pronto-DOS, Diversi-DOS, Hyper-DOS и David-DOS, вместе с дополнительными функциями, но она никогда не использовалась в официальном выпуске Apple DOS. Похожая функциональность, однако, использовалась преемницей операционной системы Apple, ProDOS. Специфическая для Apple IIGS операционная система GS/OS в конечном итоге использовала еще более эффективную технику «разбросанного чтения», которая считывала любой сектор, который случайно проходил под считывающей головкой, если это было необходимо для считываемого файла.
В 2013 году, спустя более 35 лет после дебюта Apple II , оригинальный исходный код Apple DOS был опубликован Музеем компьютерной истории на его веб-сайте. [10] Он был передан в дар первоначальным автором Полом Лоутоном. [11]