Apple DOS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:37, 8 января 2018.
Apple DOS
Версия операционной системы DOS
16367.jpg
Fid.gif
Разработчик Apple Inc.
Состояние разработки Актуальное
Исходный код Закрытый (со свободными компонентами)
Дата первого релиза 1978; 41 years ago (1978)
Последний релиз 3.3 / 1980; 39 years ago (1980)
Доступно в Мультиязычная ОС
Платформы ЭВМ
Ядро (тип) Монолитное
Лицензия Проприетарная
Официальный веб-сайт www.apple.com

Apple DOS — операционная система для микрокомпьютеров серии Apple II с 1978 по 1983 гг. Также известна как просто DOS 3.x. У Apple DOS было три важных версии: DOS 3.1, DOS 3.2 и DOS 3.3, за каждой из которых следовал релиз, исправляющий небольшие ошибки, но только в случае DOS 3.2 этот релиз получил собственный номер версии — DOS 3.2.1. Наиболее известная и используемая версия — DOS 3.3 релиза 1980 и 1983 годов.

История

Когда Apple Computer представила Apple II в апреле 1977 года, на новом компьютере не было дисковой или дисковой операционной системы (DOS). Хотя соучредитель Apple Стив Возняк разработал контроллер диска II в конце этого года и полагал, что он мог написать DOS, основатель Стив Джобс решил передать на аутсорсинг эту задачу. Компания рассматривала использование CP / M Digital Research, но Возняк искал операционную систему, которая была проще в использовании. 10 апреля 1978 года Apple подписала контракт с Shepardson Microsystems на сумму 13 000 долларов, чтобы написать DOS и доставить его в течение 35 дней. Apple предоставила подробные спецификации, а ранний сотрудник Apple Рэнди Виггинтон работал в тесном контакте с Паулем Лоутоном Шепардсона, поскольку последний написал операционную систему с перфокартами и миникомпьютером.

Не было Apple DOS 1 или 2, как таковой. Версии с 0,1 по 2,8 были последовательно пересмотренными версиями во время разработки, которые также можно было бы назвать сборками с 1 по 28. Apple DOS 3.0, переименованная версия версии 2.8, никогда не публиковалась из-за ошибок. К разочарованию многих программистов Apple опубликовала официальную документацию до выпуска 3.2.

Apple DOS 3.1 был опубликован в июне 1978 года, чуть меньше, чем через год после появления Apple II, став первой дисковой операционной системой для любого компьютера Apple. Позднее был выпущен исправление ошибок, устраняющее проблему с помощью его утилиты MASTER CREATE, которая используется для создания основных дисков Apple DOS: встроенная команда INIT создает диски, которые могут загружаться только на компьютерах с по меньшей мере одинаковым объемом памяти как тот, кто их создал. MASTER CREATE включает в себя самопересекающуюся версию DOS, которая загружается на яблоки с любой конфигурацией памяти. [Источник 1].

Apple DOS 3.2 была выпущена в 1979 году, чтобы отразить серьезные изменения в методах загрузки компьютеров, которые были встроены в преемника Apple II, Apple II Plus. Вместо оригинального Integer BASIC, прошивка Apple II Plus включает в себя новую платформу Applesoft II с плавающей запятой BASIC. Новая прошивка также имеет функцию автозапуска, которая автоматически находит контроллер диска и загружается из него при включении системы - заработав имя Autostart ROM.

Apple DOS 3.3 был выпущен в 1980 году. Он улучшает различные функции версии 3.2, а также позволяет получать большие выигрыши в хранении гибких дисков; новые P5A / P6A PROM в контроллере диска могут считывать и записывать данные с большей плотностью, так что вместо 13 секторов (3,25 KiB) 16 секторов (4 KiB) данных могут храниться на диске, увеличивая емкость от От 113,75 КБ до 140 КБ на одну сторону диска - 16 КБ, из которых используются служебные данные файловой системы и копия DOS, на диск с диском DOS 3.3, оставляя 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) или карта прошивки. [Источник 2].

Особенности Apple DOS

Sofa4.png

Продвинутой по тем временам особенностью Apple DOS была поддержка имён файлов, способных содержать до 30 любых символов (хотя в случае использования в именах файлов управляющих символов и запятых могли возникать проблемы с использованием таких имён в командах). Также интересной особенностью была строгая типизация файлов: каждый файл мог иметь один из типов A (Applesoft BASIC), B (двоичный), I (Integer BASIC), T (текстовый), и, в зависимости от типа, к файлу могли быть применены разные операции. Ещё несколько типов (R, S, «дополнительный A», «дополнительный B») было зарезервировано для дальнейших расширений. Файлы разных типов имели разную внутреннюю организацию; изменить тип существующего файла было невозможно.

Штатно Apple DOS была рассчитана на работу только с устройством Disk II, то есть с 5-дюймовыми односторонними дискетами ёмкостью 140 килобайт. Так как физически дискета имела две рабочие стороны, то её можно было вынуть из дисковода и вставить обратно другой стороной. Таким образом, каждая физическая дискета логически представляла собой два отдельных 140-килобайтных диска. Диски разбивались на 35 дорожек по 16 секторов размером 256 байт (13 секторов в версиях 3.1 и 3.2, использовавших более примитивный метод кодирования битов на диске). Диск имел один каталог, который, вместе с таблицей свободного пространства, размещался на зарезервированной для этого 17-й дорожке (посередине). В трёх первых дорожках диска размещалась сама Apple DOS (на загрузочных дискетах), в том числе самый первый сектор был загрузочным сектором. В каталоге для каждого файла сохранялись его имя, тип, флажок защиты от записи, номер первого сектора и размер файла в секторах. В первом секторе файла находился общий список занимаемых файлом секторов, этот список при необходимости сам мог продолжаться в других секторах. Экстенты не использовались, всё дисковое пространство распределялось секторами.[Источник 3].

Одновременно могло быть установлено несколько дисков в различных устройствах Disk II. Эти устройства с дисками идентифицировались по номерам разъёмов, к которым они подключались.

Каждый диск в Apple DOS имел так называемый номер тома, однобайтное число, по умолчанию 254. В командах работы с файлами можно было указывать специальный параметр для проверки, что в дисководе установлен диск с указанным номером. Если номер не совпадал, команда завершалась с ошибкой. Но на практике идея с номерами томов не получила развития, практически все диски имели номер 254. В позднейшие годы существовали решения по использованию номера тома при подключении к Apple II жёсткого диска, который в таком случае логически выглядел как набор отдельных дискет. Но с жёстким диском было гораздо удобнее работать в пришедшей на смену Apple DOS системе ProDOS (ранние версии которой были совместимы со всеми моделями Apple II).

В связи с отсутствием в Apple II системных часов, время и дата в Apple DOS никак не отслеживались. Работа со временем появилась только в ProDOS.

Команды Apple DOS были реализованы как расширение набора команд интерпретатора языка Бейсик, зашитого в ПЗУ Apple II. Собственного командного процессора или другого интерфейса пользователя Apple DOS не имела.

Вся система Apple DOS полностью загружалась в оперативную память и постоянно там находилась во время своей работы. В связи с этим, системный диск был нужен только для начальной загрузки. Даже для создания нового системного диска (командой INIT) было достаточно только загруженного в оперативную память кода Apple DOS, диск с исходной копией не требовался.

Технические детали

Диски Apple DOS 3.1 используют 13 секторов данных на дорожку, каждый из которых составляет 256 В. Он использует 35 треков на диске и может иметь доступ только к одной стороне гибкого диска, если только пользователь не перевернул диск. Это дает пользователю общую емкость хранения 113,75 КБ на каждую сторону, из которых около 10 КБ используются для хранения самой DOS и дискового каталога, оставляя около 100 КБ для пользовательских программ.

По сравнению с современными операционными системами Apple DOS довольно примитивен. Первый уровень операционной системы называется RWTS, что означает «сектор отслеживания чтения / записи». Этот слой состоит из подпрограмм для поиска треков, чтения и записи в секторах и форматирования диска. Вместо этого был создан API, называемый File Manager, и реализует функции для открытия, закрытия, чтения, записи, удаления, блокировки (например, защиты от записи), разблокировки (например, разрешения записи) и переименования файлов, а также для проверки структурная целостность файла. Существует также функция каталога, для перечисления файлов на дискете и функция «init», которая форматирует диск для использования с DOS, сохраняя загрузочную программу (обычно называемую HELLO), которая автоматически запускается, когда этот диск загружается из , В дополнение к API-интерфейсу File Manager реализованы основные процедуры DOS, которые подключаются к интерпретатору BASIC машины и перехватывают все команды на диске. Он предоставляет BLOAD, BSAVE и BRUN для хранения, загрузки и запуска исполняемых файлов. LOAD, RUN и SAVE предоставляются для BASIC-программ, а EXEC предоставляется для запуска текстовых пакетных файлов, состоящих из команд BASIC и DOS. Наконец, существует четыре типа файлов, обозначенных буквами в списке каталогов:

  • I - Целые программы BASIC (хранятся в компактном формате, а не в обычном тексте)
  • A - Программы Applesoft BASIC (также хранятся в упакованном, компактном формате)
  • B - Двоичные файлы, исполняемые программы машинного языка или файлы данных
  • T - ASCII (или текстовые, распакованные пакетные файлы)

Существует четыре дополнительных типа файлов; «R», «S» и дополнительные «A» и «B», ни одна из которых не поддерживается полностью. DOS распознает эти типы только для каталогов, и нет прямых способов манипулирования этими типами файлов. Тип «R» нашел некоторое применение для перемещаемых двоичных исполняемых файлов. Несколько программ поддерживают тип «S» в качестве файлов данных.

Перемещаемое программное обеспечение

Большинство 8-разрядных программ машинного языка Apple II не относятся к перераспределению кода, поскольку Apple II обычно не запускает несколько программ одновременно с более современными компьютерами. Программы обычно записываются, чтобы всегда ожидать, что каждый раз их машинный код будет в одном месте памяти. Полностью перемещаемый код сложнее и сложнее реализовать на 8-битном процессоре 6502.

Apple DOS, однако, должна учитывать различные объемы памяти, установленные в Apple II - от 16 КБ до 48 КБ. Этот DOS загружает себя в самую высокую точку, чтобы освободить более низкие места памяти для программ BASIC и графических возможностей. В машинах с объемом памяти 48 КБ или более он занимает область от $ 960016 до $ BFFF16 (достаточно места для трех файловых буферов плюс 10 КБ программного обеспечения), но может загружаться в более низкую область памяти, если доступно меньше системной памяти. (В отличие от этого, ProDOS всегда загружается в оперативную память языка, требуя, по крайней мере, 64-битной машины).

Таблица векторов вызовов в области $ 03D0-03FF16 позволяет программам находить DOS везде, где она загружается в системную память. Например, если DOS, подключенный к BASIC CLI, перестает функционировать, его можно повторно инициализировать, вызывая местоположение $ 03D016 (97610) - отсюда традиционная команда «3D0G» («3D0 go») для возврата на BASIC из системного монитора

Загрузчик

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

  • Первоначально Apple II ROM не поддерживал загрузку дисков вообще. При включении питания отобразится запрос системного монитора. Оба монитора и Integer BASIC имеют команды для перенаправления печати на драйвер принтера в указанном слоте, поэтому обычным способом загрузки с диска было «распечатать» карту интерфейса диска, обычно установленную в слот 6, используя команду 6 Control-P (от монитора ML) или PR # 6 (от BASIC). Когда на мониторе или BASIC выдается следующий символ приглашения, компьютер вызовет подпрограммы ROM на диске, чтобы «распечатать» на нем, что затем продолжит последовательность загрузки. (Можно использовать перенаправление ввода для аналогичных целей.) В качестве альтернативы, с монитора ML, пользователь может ввести номер слота, набрав C600G, чтобы напрямую вызвать загрузочный код контроллера.
  • Когда Apple II Plus была представлена, она включала возможность сканирования каждого слота расширения (работающего вниз от слота 7 до слота 1) для загрузочного ROM-карты расширения и автоматического вызова его.
  • Загрузочный код ROM карты расширения пытается загрузиться с диска 1 контроллера, перемещая рычаг чтения / записи, чтобы отслеживать нуль и пытаться прочитать 256 байтов от нуля сектора этого трека. (Если нет доступного для чтения диска, диск вращается бесконечно до тех пор, пока он не будет установлен, и дверь привода будет закрыта.)
  • Нулевой сектор содержит небольшую программу, которая инструктирует компьютер читать сектора с 0 по 9 нулевой последовательности в памяти с использованием части загрузочного кода ПЗУ (перечитывая сектор 0 в процессе).
  • Программа в секторах 1-9 дорожки 0, включая полный код RWTS, затем переходит к загрузке треков 1 и 2, которые содержат остальную часть DOS. На системном главном диске код также включен для определения конфигурации ОЗУ компьютера и перемещения DOS как можно более высоко в системную память, вплоть до 48 КБ для основной памяти Apple II ($ BFFF16).
  • Когда DOS загружается в память, он пытается загрузить и запустить программу запуска, как указано в коде программы DOS. Обычно это языковая программа BASIC с именем HELLO (или другое имя), но DOS может быть изменена для запуска других типов программ при запуске, например исполняемого двоичного файла. Внешний вид правого кронштейна () на экране является индикатором для пользователя, загружаемого программой запуска Applesoft BASIC, в то время как символ большего размера (>) указывает, что загружается программа Integer BASIC. (Это подсказки для соответствующих версий BASIC, которые инициализируются на этом этапе.)
  • Затем запускается программа запуска.

Поддержка BASIC Integer BASIC и Applesoft BASIC

Apple II начал использовать простой интерпретатор BASIC, известный первоначально как Apple BASIC, а позже как Integer BASIC. Он может обрабатывать только целые числа от -32,768 до +32,767 (16-разрядные двоичные значения) и имеет встроенную поддержку графики с низким разрешением. Но это была первая версия BASIC, доступная для Apple II, и это то, что используют самые ранние программы BASIC.

Спустя несколько месяцев после выпуска Apple II Apple поручила Microsoft разработать гораздо более мощный BASIC-интерпретатор, известный как Applesoft BASIC, способный обрабатывать реальные числа с плавающей запятой, с точностью до девяти цифр точности и базовых 10 экспонентов от -38 до +38 и с поддержкой графики высокого разрешения. Несмотря на то, что Applesoft BASIC более работоспособен, он не может запускать программы Integer BASIC, заставляя некоторых пользователей противостоять его обновлению.

DOS 3.3 был выпущен, когда Applesoft BASIC был стандартным в ROM на Apple II Plus, поэтому Apple разработала его для поддержки переключения между двумя интерпретаторами BASIC. Дисковый диск System DOS 3.3 содержит Integer BASIC и Applesoft BASIC на диске в виде двоичных файлов, которые могут быть загружены в оперативную память, что позволяет использовать любой язык, на котором не было ROM, на любом компьютере с достаточным объемом оперативной памяти. Пользователь может переключаться между BASIC, набирая FP или INT в приглашении BASIC. DOS автоматически выбирает необходимый язык при запуске сохраненной программы. Программы Applesoft сохраняются как файлы типа A, в то время как программы Integer BASIC сохраняются как файлы типа I.

Улучшения производительности и другие версии

Процедура RWTS DOS может читать или записывать дорожку в двух оборотах с правильным чередованием. Секция вращающегося диска проходит под заголовком чтения / записи, в то время как подпрограмма RWTS декодирует только что прочитанный сектор (или кодирует следующий, который должен быть записан), и если этот пропущенный сектор является следующим необходимым, DOS необходимо подождать почти целая революция диска, чтобы этот сектор снова появился. Это называется «дует оборот» и является хорошо понятным узким местом производительности в дисковых системах. Чтобы этого избежать, сектора на диске DOS расположены в чередующемся порядке:

0 7 14 6 13 5 12 4 11 3 10 2 9 1 8 15

Позже ProDOS организовала секторы в этом порядке:

0 8 1 9 2 10 3 11 4 12 5 13 6 14 7 15

Когда сектор чтения и декодирования 0, сектор 8 проходит, так что сектор 1, следующий сектор, который, вероятно, будет необходим, будет доступен без ожидания. При чтении сектора 7 два ненужных сектора, 15 и 0, проходят до того, как сектор 8 доступен, а при чтении сектора 15 диск всегда должен ждать дополнительный оборот для сектора 0 на той же дорожке. Тем не менее, сектор 0, фактически необходимый в большинстве случаев, будет находиться на следующей более высокой дорожке, и эта дорожка может быть организована относительно последней, чтобы позволить необходимое время для декодирования только что прочитанного сектора и перемещения головы до появления сектора 0 вокруг. В среднем, полная дорожка может быть прочитана в двух оборотах диска.

К сожалению, ранний DOS File Manager подорвал эту эффективность, скопировав байты, считанные или записанные в файл по одному между дисковым буфером и основной памятью, требуя больше времени и в результате DOS постоянно выдувает обороты при чтении или записи файлов. [8 ] Программы стали доступны на ранних этапах для форматирования дисков с измененными чередованием сектора; эти диски дают DOS больше времени между секторами для копирования данных, что облегчает проблему.

Позже программисты за пределами Apple переписали подпрограммы File Manager, чтобы избежать дополнительной копии для большинства секторов файла; RWTS было поручено читать или записывать секторы непосредственно в основную память или из нее, а не из дискового буфера всякий раз, когда должен был передаваться полный сектор. Ранний «патч» для обеспечения этой функциональности был опубликован в Call-A.P.P.L.E .. Участицы в команде LOAD от трех до пяти раз были типичными.

Эта функциональность вскоре появилась в коммерческих продуктах, таких как Pronto-DOS, Diversi-DOS, Hyper-DOS и David-DOS, а также дополнительные функции, но она никогда не использовалась в официальной версии Apple DOS. Подобная функциональность, однако, использовалась операционной системой Apple-преемника ProDOS. Операционная система Apple IIGS, GS / OS, в конечном итоге будет использовать еще более эффективную технику «разбрасывания», которая будет читать любой сектор, который проходил под считываемой головкой, если это было необходимо для считываемого файла.

Команды Apple DOS

  • CATALOG — выдача каталога диска;
  • DELETE, LOCK, RENAME, UNLOCK, VERIFY — управление файлами, только эти команды могли работать с файлами произвольного типа;
  • INIT — запись копии Apple DOS из памяти на диск и установка файла автозапуска (в оригинальной 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 — установка количества одновременно открытых файлов;
  • CHAIN, GLOAD, GSAVE, DIR, TYPE, MAKE, MODE, SOUND, BOOT, RLOAD, HALT (в QDOS 2.A вместо HALT была реализована команда KEYS) — дополнительные команды в семействе клонов Eagle Software GraphExt, отсутствовавшие в оригинальной Apple DOS.

Исходный код Apple DOS

Исходный код

Музей компьютерной истории в Маунтин-Вью обнародовал у себя на сайте исходный код дисковой операционной системы (DOS) для серии компьютеров Apple II, выпускавшихся в конце 1970 — начале 1980-х годов. Код был опубликован с разрешения компании Apple, говорится в пресс-релизе музея. [Источник 4].

Документы, размещенные музеем, доступны в PDF и представляют собой отсканированные листы со строчками кода. Кроме того, обнародованы рукописные заметки, касающиеся дискового накопителя для Apple II, и контракты, заключенные Apple Computer с разработчиком DOS — компанией Shepardson Microsystems.

Необходимость в DOS возникла, когда Стив Возняк сконструировал для Apple II 5-дюймовый дисковод Disk II. Изначально компьютер поставлялся только с кассетным накопителем. Поскольку в Apple тогда работали только 15 сотрудников, написание системы решили поручить стороннему исполнителю.

Источники

  1. Apple DOS // Wikipedia. [1999-2017] Дата обновления: 04.09.2017. URL: https://ru.wikipedia.org/wiki/Apple_DOS (дата обращения: 14.10.2017).
  2. Исторический портал //Apple History. [2003-2017] Дата обновления: 16.04.2017 URL: https://apple2history.org/history/ah14/#01 (дата обращения: 14.10.2017).
  3. IBM Personal Computer // Wikipedia.[1999-2017] Дата обновления: 24.08.2017. URL: https://en.wikipedia.org/wiki/Apple_DOS (дата обращения: 14.10.2017).
  4. Исходный код // Lenta.ru. [2010-2017] Дата обновления: 13.11.2013. URL: https://lenta.ru/news/2013/11/13/appledos/ (дата обращения: 14.10.2017).

Ссылки