Acorn MOS

редактировать
Операционная система компьютера
Операционная система компьютера (MOS)
Разработчик Компьютеры Acorn
Написано на 8-битный 6502 машинный код (v0, v1) 65C02 машинный код (v2 – v5)
Рабочее состояниеСнято с производства
Исходная модельЗакрытый исходный код
Первоначальный выпускКонец 1981 г.; 39 лет назад (1981)
Окончательный выпуск 5 / Начало 1986 года; 34 года назад (1986)
Маркетинговая цельПерсональные компьютеры
Доступно на английском
Метод обновленияЗапасные ПЗУ
ПлатформыBBC Micro, Acorn Electron, BBC Master series
Kernel typeMonolithic
Default интерфейс пользователя интерфейс командной строки (v3, v4, v5)
ПреемникARX (снято с производства). Arthur, переименовано в RISC OS

The Machine Operating System(MOS) или OS- снятый с производства компьютер операционная система (ОС), используемая в Acorn Computers линейке компьютеров BBC. Он включал поддержку четырехканального звука и графики, абстракции файловой системы , а также цифрового и аналогового ввода / вывода (I / O), включая шину расширения с последовательным подключением. Система была однозадачной, монолитная и не реентерабельная.

Версии от 0.10 до 1.20 использовались на BBC Micro, версия 1.00 на Electron, версия 2 использовалась в B +, а версии с 3 по 5 использовались в серии BBC Master.

Последний компьютер BBC, BBC A3000, не работал с этой операционной системой (но он также включал в себя интерфейс командной строки со звездочкой (CLI)), был 32- бит и запустил RISC OS. Эта операционная система использовала части архитектуры Acorn MOS и разделяла ряд характеристик (команды, система VDU) с более ранней 8-битной MOS.

Версии от 0 до 2 MOS имели размер 16 KiB, были записаны в 6502 машинном коде и удерживались в при чтении -только память (ROM) на материнской плате. Верхняя четверть 16-битного адресного пространства (от 0xC000 до 0xFFFF) зарезервирована для его кода ПЗУ и пространства ввода-вывода.

Версии с 3 по 5 все еще были ограничены адресным пространством 16 КиБ, но им удавалось содержать больше кода и, следовательно, более сложные процедуры, отчасти из-за альтернативного центрального процессора 65C102 (CPU) с его более плотным набором команд плюс осторожное использование разбиения по страницам.

Содержание
  • 1 Пользовательский интерфейс
  • 2 Сервисные ПЗУ
  • 3 Расширение
  • 4 Текст, графика, печать
  • 5 Звук
  • 6 Поддержка других устройств ввода-вывода и второго процессора
  • 7 Версии
    • 7.1 версии 0 и 1
    • 7.2 версии 2
    • 7.3 версии с 3 по 5
    • 7.4 Кредиты
  • 8 Прием
  • 9 Ссылки
Пользовательский интерфейс

Исходные версии MOS, от 0 до 2, не имели пользовательского интерфейса как такового: приложения должны были пересылать Командные строки операционной системы к ОС от ее имени, а язык программирования BBC BASIC ROM со встроенным ассемблером 6502, поставляемый с BBC Micro, является приложением по умолчанию, используемым для этой цели. BBC Micro остановится с ошибкой Language?, если отсутствует ПЗУ, которое сообщает ОС о возможности предоставить пользовательский интерфейс (так называемые языковые ПЗУ). MOS версии 3 и более поздних версий действительно имел простой интерфейс командной строки , обычно видимый только тогда, когда энергонезависимая память BIOS (CMOS) не содержала настройки для ПЗУ на языке по умолчанию.

Прикладные программы в ПЗУ, а также некоторые программы на кассетах и ​​дисках, как правило, предоставляют командную строку, полезную для работы с файловым хранилищем, например для просмотра вставленного в данный момент диска. ОС предоставляет возможность ввода строки и подчиняется введенным командам, но приложение контролирует запуск командной строки.

Программное обеспечение на кассетах и ​​дисках для загрузки обычно полагается на собственный пользовательский интерфейс BBC BASIC, хотя можно настроить гибкий диск для загрузки без необходимости выполнения команд BASIC ; на практике это выполнялось редко.

В BBC BASIC командам ОС предшествует звездочка или они передаются через ключевое слово OSCLI, чтобы указать BASIC перенаправить эту команду непосредственно в ОС. Это привело к тому, что звездочка стала символом подсказки для любого программного обеспечения, предоставляющего командную строку ОС; MOS версии 3 официально использует звездочку в качестве символа командной строки. При ссылке на команду ОС они обычно включают звездочку как часть имени, например, * RUN, * CAT, * SPOOLи т. Д., Хотя только часть после звездочки является командой.

Нераспознанные команды предлагаются любым служебным (расширенным) ПЗУ; Системные ПЗУ файловой системы часто проверяют, соответствует ли файл на диске этому имени, как и большинство других интерфейсов командной строки. Вызов операционной системы OSWORD с аккумулятором = 0, однако, предлагает программам однострочный ввод (с ctrl-U для очистки строки и включенными клавишами копирования курсора) с базовой фильтрацией символов и ограничением длины строки.

Интерпретатор командной строки MOS предлагает довольно необычную идею: сокращение команд. Чтобы сохранить ввод, можно использовать точку после первых нескольких символов, например * L.для * LOADи * SA.для * SAVE. * RUNбыло сокращено до * /. * CAT, команда каталогизации (списка) кассеты или диска, может быть сокращена до *..

служебных ПЗУ

ПЗУ сторонних производителей обычно также поддерживают сокращение команд, что приводит к двусмысленности два служебных ПЗУ предоставляют команды, которые очень похожи по названию, но могут отличаться по функциям. В этом случае MOS будет отдавать приоритет команде из ПЗУ в слоте ПЗУ с более высоким номером, т. Е. 7 имеет приоритет над 6.

Некоторые сторонние поставщики могли бы обойти это, добавив к своим командам звездочки другие буквы.. Например, в ROMS Watford Electronics их звездные команды будут начинаться с префикса W, что сделает их уникальными.

Расширение

Младшие 16 КиБ карты ПЗУ (от 0x8000 до 0xBFFF) зарезервированы для активного бокового адресного пространства выгружаемого банка страниц. Система Sideways на BBC Micro позволяет переключать по одному ПЗУ из разъемов на материнской плате (или платах расширения) на карту основной памяти. Таким образом, программное обеспечение можно запускать из ПЗУ (оставляя оперативную память свободной от программного кода пользователя для большего рабочего пространства), а ОС можно расширять с помощью таких ПЗУ. Наиболее распространенным боковым ПЗУ после BASIC является Acorn Disc Filing System, которая используется для поддержки дискет в машине.

Во время сброса каждое выгружаемое ПЗУ включается и спрашивает, сколько общедоступного и частного рабочего пространства ему нужно. Каждому ПЗУ выделяется фрагмент частной рабочей области, которая остается выделенной все время, и один блок общедоступной рабочей области, равный размеру наибольшего запроса, становится доступным для активного ПЗУ. Во время работы выгружаемая область быстро переключается между ПЗУ, когда выдаются команды файловой системы и нераспознанные команды помещаются в ОС.

MOS выделяет блок памяти размером 3,5 КиБ (от 0x0000 до 0x0DFF) из нижней части карты памяти для рабочей области ПЗУ операционной системы и языка:

АдресИспользуйте
0x0000- 0x00FFТекущее языковое рабочее пространство, другое системное рабочее пространство
0x0100-0x01FFСтек ЦП
0x0200-0x02FFВекторы ОС, системные переменные, другое рабочее пространство
0x0300-0x03FFРабочее пространство драйвера VDU, рабочее пространство кассетной системы, буфер ввода с клавиатуры
0x0400-0x07FFНазначено ПЗУ текущего языка или трубке. BASIC использует 0x0400-0x046B для однобуквенных целочисленных переменных от @% до Z% (4 байта на букву), которые, таким образом, доступны быстрее, чем переменные в куче.
0x0800-0x08FFЗвуковая система (хранит огибающие ADSR и тоновый буфер; если звук не используется, здесь можно сохранить небольшой объем пользовательских данных), буфер принтера, определения ENVELOPE
0x0900-0x09FFБуферы кассетного и последовательного ввода (сюда можно поместить пользовательские данные, если кассета не используется, поэтому на странице 9 было собрано множество небольших машинных кодов )
0x0A00 -0x0AFFБуферы кассетного и последовательного вывода, также используемые для небольших утилит машинного кода.
0x0B00-0x0BFFПользовательские клавиши (строки, которые вставляются при нажатии функциональных клавиш, задаются командой * KEY)
0x0C00-0x0CFFПользовательские символы для режимов без телетекста (здесь могут быть помещены пользовательские данные, если дисплей находится в режиме телетекста)
0x0D00-0x0DFFПроцедура обслуживания немаскированных прерываний, сетевая рабочая область, мышь / рабочее пространство трекбола, косвенные векторы к выгружаемым ПЗУ и указатели рабочего пространства ПЗУ страницы

На машине с только кассетой 0x0E00 является началом памяти программ пользователя. Если установлены ПЗУ расширения ОС, такие как ПЗУ файловой системы, больше памяти выделяется выше этой точки; ПЗУ DFS обычно используют еще 2,75 КиБ для кэширования каталога дисков и управления буферами произвольного доступа. ПЗУ сетевой файловой системы (для Econet ) выделяет еще 0,5 КБайт сверх этого. Это серьезная проблема, поскольку MOS не поддерживает перемещение машинного кода, который должен запускаться с адреса, по которому он был собран, поэтому некоторые программы, предполагавшие фиксированный запуск памяти пользовательских программ, могли перезаписать рабочее пространство MOS. Проблема была устранена в версиях с 3 по 5, позволяя ПЗУ выделять рабочее пространство в альтернативном банке ОЗУ с адресами от 0xC000 до 0xDFFF, которые присутствовали в компьютерах серии Master, хотя старые ПЗУ могли продолжать выделять блоки основной памяти.

ОС также поддерживает векторную таблицу всех своих вызовов, которая может быть обновлена ​​до перехвата любых вызовов ОС для расширения пользователя. Изменяя или «зацепляя» эти векторы, разработчики могли заменять свои собственные процедуры на те, которые предоставляются MOS по умолчанию.

Текст, графика, печать

MOS позволяет направлять текстовый вывод, предназначенный для экрана, вместо этого на принтер, или и то, и другое сразу, что обеспечивает очень простую поддержку печати для простого текста. Печать графики не поддерживается и должна быть написана отдельно.

Графика и вообще весь экранный вывод обрабатываются очень необычным образом. Управляющие символы ASCII почти полностью получили новое значение в MOS: известные как «драйверы VDU», поскольку в документации они описаны в связи с оператором VDU в BBC BASIC, они интерпретируются как символы управления видео. VDU 30(т.е. ASCII 30) перемещает курсор на (0, 0), VDU 4 и 5 выбирают, должен ли текст отображаться на графическом или текстовом курсоре, VDU 12 очищает экран, а VDU 14 и 15 включить и выключить блокировку прокрутки. Таким образом, нажатие ctrl-L очистит экран, а ctrl-N включит блокировку прокрутки. VDU 2 и 3 переключают, выводится ли экранный вывод на принтер. Оператор BBC BASIC VDU VDU x [, y [, z...]]эквивалентен стандартному BASIC PRINT CHR $ (x) [; CHR $ (y) [; CHR $ (z)...]]и многие из управляющих кодов (например, 12 для «очистки экрана» и 7 для «звукового сигнала») имеют те же функции, что и на других современных машинах.

Многие другие управляющие символы принимают параметры: один или несколько следующих за ними символов используются исключительно для их битового значения в качестве параметра, а не в качестве управляющего кода. VDU 19 обрабатывает переназначение палитры; следующие пять байтов представляют запись палитры, желаемый цвет и три резервных байта. VDU 31 помещает текстовый курсор в позицию, содержащуюся в следующих двух байтах. VDU 17 устанавливает цвет текста, а 18 - цвет графики. VDU 25 использует следующие пять байтов для перемещения графического курсора и построения сплошных и пунктирных линий, точек и закрашенных треугольников, задокументированного объема графики в MOS 0 и 1. Первый байт - это код команды, за ним идут x и y co. -координаты как две пары байтов. Другие графические функции, такие как заливка горизонтальной линии, ограниченной заданным цветом, были доступны за счет использования недокументированных или плохо документированных кодов команд.

BBC BASIC содержал псевдонимы для обычно используемых кодов VDU (например, GCOL для VDU 18 или PLOT для VDU 25). Некоторые операторы были прямыми эквивалентами кодов VDU, например, CLS для VDU 12. Некоторые операторы были менее точными эквивалентами, поскольку они включали в себя функции, специфичные для BASIC, а также вызов подпрограмм ОС; например, оператор MODE xустановит режим экрана xи отрегулирует системную переменную BASIC HIMEM в соответствии с объемом памяти, который новый режим оставил доступным для BASIC, тогда как VDU 22, xустановит только режим экрана, не изменяя HIMEM. Это позволяло программисту выделить блок памяти из BASIC - например, для загрузки в него процедур машинного кода - путем понижения значения HIMEM в начале программы, и по-прежнему иметь возможность переключать режимы экрана, не освобождая его в качестве побочного эффекта..

Существует одна команда операционной системы для записи символа, OSWRCH, которая отвечает за весь текст и графику. Например, чтобы переместить курсор в (10, 15), необходимо в 6502 ассемблере:

LDA # 31: JSR OSWRCH \ переместить текстовый курсор LDA # 10: JSR OSWRCH \ x -координата LDA # 15: JSR OSWRCH \ y-координата

(LDA загружает значение в аккумулятор; JSR - это «переход к подпрограмме».) При третьем вызове ОС курсор переместится. Следующий код будет рисовать линию от (0, 0) до (0, +100):

LDA # 25: JSR OSWRCH \ begin "PLOT" (ASCII 25) command LDA # 4: JSR OSWRCH \ команда k = 4 или переместить абсолютный LDA # 0: JSR OSWRCH: JSR OSWRCH: JSR OSWRCH: JSR OSWRCH \ send (0, 0) как младшие, старшие пары байтов
LDA # 25: JSR OSWRCH \ begin PLOT LDA # 1: JSR OSWRCH \ k = 1 - отрисовка относительного LDA # 0: JSR OSWRCH: JSR OSWRCH \ x = 0 LDA # 100: JSR OSWRCH \ y = 100 (младший байт) LDA # 0: JSR OSWRCH \ high byte

BBC BASIC позволяет выполнять вышеуказанное как любое из следующего:

VDU 25, 4, 0; 0; 25, 4, 100; 0; ПЕЧАТЬ CHR $ (25); CHR $ (4); CHR $ (0);... и т.д. PLOT 4, 0, 0: PLOT 1, 0, 100 MOVE 0, 0: DRAW 0, 100: REM только абсолютные координаты! OSWRCH = & FFEE: A% = 25: ВЫЗОВ OSWRCH: A% = 4: ВЫЗОВ OSWRCH: A% = 0: ВЫЗОВ OSWRCH... и т. Д.

Графика в Acorn MOS использует разрешение виртуальной графики 1280 × 1024, с позициями пикселей, сопоставленными с ближайшим эквивалентным пикселем в текущем графическом режиме. Переключение разрешения видео не повлияет на форму, размер или положение графики, нарисованной даже с совершенно другими пиксельными метриками в новом режиме, потому что все это учитывается ОС.

MOS предоставляет два других вызова ОС, которые обрабатывают текстовый вывод: OSNEWLи OSASCI. OSNEWL записывает перевод строки и возврат каретки в текущий выходной поток. OSASCI пересылает все символы непосредственно в OSWRCH, за исключением возврата каретки, который вместо этого вызывает вызов OSNEWL. Точный код OSASCI и OSNEWL - пять строк ассемблера 6502 - задокументирован в Руководстве пользователя BBC Micro.

MOS реализует распознавание символов, так что текст, напечатанный на экране системным шрифтом, можно выбрать с помощью клавиш со стрелками и ввести с помощью клавиши COPY, как если бы он был набран. Чтобы активировать редактирование экрана, пользователь перемещает аппаратный курсор к тексту для чтения, и ОС отображает второй курсор в программном обеспечении в исходной позиции. Нажатие COPYкопирует один символ из аппаратного курсора в программный курсор и перемещает оба, так что при удержании клавиши копируется часть текста, при этом курсоры обтекают вертикальные края экрана по мере необходимости. Если экран прокручивается во время редактирования, положение аппаратного курсора регулируется в соответствии с текстом. Пользователь может вносить изменения в текст во время копирования, а определенные пользователем символы распознаются в графических режимах. Редактирование экрана прекращается при нажатии RETURNили ESCAPE, которые имеют свои обычные эффекты. Распознавание символов становится доступным для пользователей в API с вызовом для чтения символа в текущей позиции курсора.

Звук

Генерация звука осуществляется посредством другого вызова ОС, OSWORD, который обрабатывает множество задач, перечисленных с помощью кода задачи, помещенного в аккумулятор. Все вызовы OSWORD содержат блок параметров, используемый для отправки и получения нескольких данных; адрес этого блока передается в регистры X и Y, с младшим байтом в X и старшим байтом в Y. Имеется четыре буферизованных звуковых канала - три мелодических и один шумовой на основе звукового чипа, найденного в BBC Micro.. Для мелодических каналов существует только одна форма волны; поддерживаемые параметры ноты - высота, длительность, амплитуда, выбор огибающей и различные варианты управления. Для параметра амплитуды ноль или отрицательное значение задают статическую амплитуду, а положительное значение выбирает огибающую амплитуды и высоты тона (предварительно определенное изменение во времени) для применения к ноте.

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

OSWORD обрабатывает множество функций, кроме звука, многие из которых не имеют прямой поддержки в BASIC. К ним можно получить доступ из BASIC, настроив блок параметров, загрузив его адрес в X% и Y% и код задачи в A%, а затем вызвав процедуру.

Поддержка другого ввода / вывода и второго процессора

BBC Micro поддерживает второй процессор, подключенный через Tube, что обеспечивает прямой доступ к системной шине. Код драйвера для интерфейса Tube не хранится в MOS, обычно предоставляется внешним служебным ПЗУ.

В ОС есть вызовы для обработки чтения и записи всех операций ввода-вывода (порты и экранная память), и программистам настоятельно рекомендуется использовать их в документации Acorn. Причина этого заключается в том, что при установке второго процессора пользовательское программное обеспечение запускается из отдельной карты памяти на дальней стороне шины процессора Tube, и прямой доступ к отображенным в память регистрам ввода-вывода и видеопамяти невозможен. Однако для повышения производительности многие приложения, включая многие игры, записывают данные непосредственно в основное адресное пространство для ввода-вывода и, следовательно, дают сбой или пустой экран, если подключен второй процессор 6502. Одной из таких областей, критичных к производительности, является поддержка спрайтов : оборудование BBC Micro не поддерживает спрайты, а игры должны реализовывать спрайты программно. На практике широкое использование прямого доступа вместо вызовов ОС очень редко вызывало проблемы. Вторые процессоры были дорогими, и для их использования было написано очень мало программного обеспечения, поэтому их мало кто покупал, и те, у кого они были, могли просто выключить их или отсоединить кабель, если возникла проблема.

MOS содержит две встроенные файловые системы: кассету и ПЗУ. Они очень похожи (попробуйте * ROM, * OPT 1 2, * CATс установленным подходящим ПЗУ) и имеют много общего кода. Они оснащены элементарным механизмом защиты от копирования, при котором файл с определенным установленным флагом не может быть загружен, кроме как для его выполнения. (До того, как Amstrad выпустил на массовый рынок двухкассетный магнитофон в 1987 году, у большинства домашних пользователей не было возможностей перезаписывать кассеты без загрузки файлов в компьютер для повторного сохранения.) Усовершенствованная система архивирования дисков (ADFS), установленная в качестве стандартной в серии Master, имеет аналогичный механизм.

Версии

Выпуск 0 и 1

Версии для Семейство BBC Micro, начиная с 0,10 и заканчивая 1,20. Как ни странно, Electron поставлялся с версией 1.00, несмотря на то, что был выпущен после версии 1.20 BBC Micro, потому что это был первый выпуск ПЗУ для электрона. Номер версии MOS не был задуман как определение API: электронное ПЗУ ни в каком смысле не было «основано» на BBC Micro ROM версии 1.0.

Выпуск 2

Эта версия предназначена для BBC Model B +, по сути, такая же, как MOS 1.20, за исключением добавления поддержки бокового и теневого ОЗУ, присутствующего в B +.

Версии 3–5

MOS 3 - MOS 5, поставляемые с системами BBC Master Series, в моделях Master 128, Master ET и Master Compact соответственно.

В первоначальном выпуске MOS 3 были расширены возможности, предоставляемые в MOS 2 на B +, для поддержки дополнительного оборудования, обеспечения возможности командной строки и расширения кода драйвера VDU с улучшенными возможностями построения графики. Обнародованы две известные версии: наиболее распространенная версия 3.20 и версия 3.50 (хотя в ней было больше функций и исправлены ошибки, она не была на 100% совместима с некоторыми популярными приложениями, поэтому предлагалась только в качестве дополнительного обновления).

MOS 4 была урезанной версией MOS 3, предназначенной для столь же минимизированного Master ET, и в ней исправлено несколько мелких ошибок.

MOS 5 поставлялась с Master Compact и была сильно изменена, некоторые функции были удалены или сильно изменены.

Кредиты

За исключением MOS 3.50, где пространство было освобождено для большего количества кода, область, обычно скрытая ячейками памяти ввода / вывода (768 байтов от 0xFC00-0xFEFF включительно) в ПЗУ MOS содержало список имен участников системы. Это можно исправить, извлекая ПЗУ и считывая его содержимое в программаторе СППЗУ. Те, у кого не было такого устройства, могли получить доступ к ПЗУ на Мастере, установив тестовый бит в регистре управления доступом, а затем используя программу машинного кода для копирования ПЗУ непосредственно в экранную память текстового режима.

Полный текст кредитной строки в MOS 1.20 выглядит следующим образом; для экономии памяти после запятых не ставятся пробелы:

"(C) 1981 Acorn Computers Ltd. Благодарности выражаются следующим участникам разработки BBC Computer (среди прочих слишком многочисленны, чтобы упоминать): - Дэвид Аллен, Боб Остин, Рам Банерджи, Пол Бонд, Аллен Бутройд, Кембридж, Клиартон, Джон Колл, Джон Кокс, Энди Криппс, Крис Карри, 6502 дизайнера, Джереми Дион, Тим Добсон, Джо Данн, Пол Фаррелл, Ферранти, Стив Фербер, Джон Гиббонс, Эндрю Гордон, Лоуренс Хардвик, Дилан Харрис, Герман Хаузер, Hitachi, Энди Хоппер, ICL, Мартин Джексон, Брайан Джонс, Крис Джордан, Дэвид Кинг, Дэвид Китсон, Пол Кривачек, Компьютерная лаборатория, Питер Миллер, Артур Норман, Глин Филлипс, Майк Прис, Джон Рэдклифф, Уилберфорс-роуд, Питер Робинсон, Ричард Рассел, Ким Спенс-Джонс, Грэм Тебби, Джон Текрей, Крис Тернер, Адриан Уорнер, Роджер Уилсон, Алан Райт ".

Reception

В интервью в 1993 и 2001 годах соучредитель Acorn Герман Хаузер рассказал, что Билл Гейтс Microsoft, заметив, что 1,5 миллиона BBC Micros были продал, пытался продать MS-DOS компании Acorn, но Хаузер считал, что переход на MS-DOS был бы «шагом назад» по сравнению с сохранением системы Acorn.

Ссылки
Примечания
Последняя правка сделана 2021-06-08 21:36:52
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте