Орион-128/Радио 07-91/Операционная система ORDOS. Версия 2.4.

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: В. СУГОНЯКО, В. САФРОНОВ

Источник: http://retro.h1.ru/Orion/ORDOS/OrDOSv24.php

С момента публикации первого варианта операционной системы ORDOS версии 2.00 прошел уже год. За это время авторы ее усовершенствовали, исправили ошибки и предлагают читателям новую версию — 2.4 (табл.1). Помимо этого, нам хотелось бы рассказать о принципе расширения функций ORDOS (EXTENDED — система) и системных функциях операционной системы.

Подготовленные читатели знают, что в операционных системах, к примеру в СР/М-80 и MS DOS, есть механизм обработки пакетных файлов. Называются они так потому, что содержат набор (пакет) команд в символьном виде. По сути, это программа — на языке высокого уровня) в которой пользователь предписывает операционной системе порядок действий, которые она должна выполнять в автоматическом режиме.

Среди пакетных файлов есть «особые» — выполняемые при запуске и инициализации операционной системы. При включении компьютера или реинициализации операционная система просматривает каталог диска и, если встречает пакетный «особый» файл с зарезервированным именем, выполняет его, прежде чем вступить в диалог с пользователем. Выполнение пакетных файлов не ограничивается только моментом инициализации системы. Пользователь может создать пакетный файл для каждого случая, в котором приходится многократно вводить с клавиатуры одни и те же функции и команды. Таким приемом можно автоматизировать процесс управления компьютером.

В качестве механизма выполнения пакетных файлов в операционной системе СР/М-80 применяется специальная внешняя команда SUBMIT, для которой создается текстовый файл с перечнем необходимых команд для выполнения. В ОС MS DOS этот механизм уже вмонтирован в систему, поэтому достаточно создать только текстовый файл и присвоить ему зарезервированное имя AUTOEXEC.ВАТ, чтобы операционная система могла его опознать.

Мы лишь вскользь коснулись возможностей выполнения пакетных файлов, поэтому советуем читателю для более углубленного изучения этого вопроса обратиться к соответствующей литературе [1, 2].

Теперь вернемся к ORDOS. Все сказанное ниже относится к операционной системе версии 2.4, которую мы публикуем ниже, с программой МОНИТОР-2.

Наличие квазидиска в качестве внешней памяти накладывает определенные ограничения на механизм выполнения пакетных файлов, так как в момент включения компьютера и инициализации операционной системы ORDOS, пакетный файл в квазидиске еще отсутствует. Небольшие размеры ORDOS не позволяют расположить этот механизм в теле операционной системы, как это сделано в MS DOS. Чтобы найти компромисс, авторы вмонтировали в ORDOS только систему поиска и запуска программы с «особым» именем.

Рассмотрим более подробно последовательность действий ОС ORDOS с момента включения компьютера. Загрузчик программы МОНИТОР-2 считывает с ROM-диска первые 2К его содержимого и размещает их в адресах 0BA00H — 0BFFFH, после чего передает управление по адресу 0BFFDH.

ОС ORDOS содержит внутри себя еще два загрузчика: «холодный» и «теплый». «Холодный» загрузчик (назван условно) проводит первичную инициализацию операционной системы ORDOS после загрузки и формирует каналы управления. До следующего перезапуска нажатия клавиши «Сброс», операционная система к «холодному» загрузчику больше не обращается.

Второй загрузчик — «теплый» используется постоянно. Его назначение обновлять (реинициализировать) командную часть ORDOS — ССР (процессор команд) при каждом возврате из прикладной программы или внешней команды в операционную систему. При этом «теплый» загрузчик считывает с ROM-диска только ССР и размещает его на «своем» месте. Необходимо это на тот случай, если ваша прикладная программа уничтожила процессор команд.

Оба загрузчика по окончании работы передают управление процессору команд, который начинает свою работу с поиска на диске В файла с именем ЕХТ (от слова EXTENTION — расширение). Если поиск происходит с разу после включения компьютера и диск В еще не форматирован или вовсе отсутствует, в некоторых случаях возможно «зависание» системы. Чтобы блокировать эту ситуацию или же просто не допустить поиск файла ЕХТ при запуске 0RDOS, следует удерживать любую символьную клавишу перед отпусканием клавиши «Сброс».

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

ORDOS считывает ЕХТ — файл (файл с именем «ЕХТ») по тем же правилам, что и директива «LOAD». Этот файл должен находиться на диске В. Если необходимо, чтобы ЕХТ — файлу было передано управление, добавьте в конце имени символ «$» (ЕХТ). В этом случае файл должен заканчиваться командой RЕТ (Ассембл.) и не нарушать структуру стека. После выполнения (или только загрузки) ЕХТ — файла управление будет возвращено ORDOS и на экране появятся атрибуты диалога с пользователем. ЕХТ — файл может «затирать» процессор команд, однако для этого он обязательно должен быть самозапускаемым, то есть принимать управление и поддерживать диалог с пользователем (если это необходимо). Самый простой пример применения EXTENDED-системы — это автоматическая загрузка нового знакогенератора, учитывающего, например, национальные особенности языка. Для этого файлу с таким знакогенератором присваивают имя ЕХТ. Напомним, что знакогенератор в ОЗУ размещался с адреса 0F000H и имеет размер — три блока, то есть до адреса 0F2FFH, поэтому необходимо проследить, чтобы был установлен соответствующий адрес старта («посадки») в реквизитах файла. Теперь, при каждом перезапуске системы, внутренний знакогенератор будет замещаться новым из файла ЕХТ.

Более сложный пример использования EXTENDED системы — выполнение функции PRINT-SCREEN, то есть «распечатки» содержимого экрана на принтере. Следует только иметь в виду, что это будет графическая копия, а не символьная.

Как это можно сделать? Программе, которая будет распечатывать или сохранять в виде файла на диске В изображение экрана, присваивают имя ЕХТ$. Затем запускают программу, копию экрана (допустим это игра) которой необходимо зафиксировать. В выбранный сюжетный момент нажимают клавишу «Сброс». Выполнение программы при этом прервется, но на экране сохранится необходимая фаза изображения. После сброса затем, естественно, начнется инициализация ORDOS и EXTENDED — система загрузит и передаст управление файлу ЕХТ$ который и будет выводить информацию на печать, или создаст файл на диске В. По окончанию работы управление операционной системе необходимо возвратить командой RET, так как в стеке уже хранится адрес возврата. Если возвращаться в ОС по команде безусловного перехода (JMP по адресу старта ORDOS), операционная система не сможет выйти из цикла вызова ЕХТ — файла.

Еще более сложное применение EXTENDED-системы — это подмена ССР, то есть процессора команд. Вместо него можно автоматически загружать, к примеру, SCREEN — COMMANDER (по примеру NORTON COMMANDER) — оболочку операционной системы, в которой вместо директив используется удобные меню и окна.

EXTENDED — система, созданная авторами в ORDOS, позволяет выполнять и BATCH — файлы (пакетные файлы), однако эта возможность реализуется дополнительной специальной программой-интерпретатором — внешней командой операционной системы. Рассмотрение этой программы выходит за рамки данной публикации.

СИСТЕМНЫЕ ФУНКЦИИ ОС ORDOS

В одной из предыдущих статей [3] мы рассказывали о структуре операционной системы ORDOS. Напомним кратко. ORDOS состоит из трех составных частей:

  • ССР — командный процессор,
  • BDOS — базовая дисковая операционная система и
  • BIOS — базовая система ввода-вывода, в качестве которой используется резидентный МОНИТОР.

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

Рассмотрим функции BDOS более подробно. Условно их можно разделить на четыре группы:

  • функции, выполняющие операции на уровне файлов,
  • подготовительные,
  • служебные и
  • информационные.

Первая группа — функции, оперирующие на уровне файлов; это самые мощные подпрограммы ORDOS, собственно директивы или резидентные команды. К этой группе относятся функции с номерами 1-8. Прежде чем вызывать на выполнение эти функции, необходимо выполнить ряд подготовительных операции (чем собственно и занимается вторая группа функций) или установок. К примеру: установить текущий диск, указать, по какому адресу находится имя файла, или определить адреса той области памяти, которую пользователь предполагает записать в виде файла на диск и т. д.

К подготовительным относятся функции с номерами 13, 15, 17.

Третья группа — функции 9,10,11,19 и 21- выполняет ряд служебных операций. Это они выполняют операции с диском на уровне байта, а также другие служебные функции.

И последняя группа функций: 12, 14, 16, 18, 20, 22, 23. Они необходимы для получения информации о состоянии диска, положения указателей, адресов.

Рассмотрим предварительно две установочные функции: установка диска (13) и установка начального адреса буфера имени файла (15). Об остальных функциях этой группы расскажем позднее.

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

Вернемся к функциям, работающим с файлами (функция 1).

Файл в ОЗУ размещается начиная с адреса «посадки», который хранится в оглавлении. Самозапуск эта функция не производит.

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

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

Если файл защищен от уничтожения, то есть в байте флагов D7=1, функция 5 не выполняется.

Перед вызовом функции 6 необходимо в буфере разместить не одно имя файла, а два — новое и через пробел старое. В конце обязательно должен находиться символ ПРОБЕЛ или ВОЗВРАТ КАРЕТКИ.

Адрес буфера, в котором будет размещаться каталог диска, должен содержать ноль в качестве младшего символа. Например: 1000Н, 7020Н, 9880Н и т. д.

Функция 7 переписывает оглавление каждого файла в буфер, не изменяя его структуру.

Вспомогательная функция 8 выполняется в составе предыдущих, однако может использоваться и автономно.

Функция 19 позволяет ограничить максимальный размер диска В. Один из примеров применения функции — ограничение объема диска при работе компьютера в цветном режиме. В этом случае устанавливается максимальный адрес — 0BFFFH.

Функция 21 выполняется только с диском В.

Функции 12, 14, 16, 18, 20, 22, 23 — информационные.

Входы функций 24 и 25 зарезервированы.

Рассмотрим подробнее структуру файла, а также размещение их на диске. Использование в качестве внешней памяти квазидиска резко упростило операционную систему: отпала необходимость оперировать секторами, дорожками и другими атрибутами гибкого магнитного диска. Благодаря этому, в квазидиске (и в ROM-диске тоже) файлы размещаются цельно и последовательно друг за другом. В начале каждого файла находится его оглавление — служебная часть, занимающая 16 байт. Назначение каждого байта в оглавлении определено в табл.3.

Чтобы легче понять структуру файла (табл.4), представим ее в виде дампа памяти. В дампе каждая строка начинается с адреса, последний символ которого имеет нулевое значение.

ТАБЛИЦА 3

  • 0-7 — ИМЯ ФАЙЛА. МОЖЕТ СОДЕРЖАТЬ НЕ БОЛЕЕ 8 СИМВОЛОВ. ЕСЛИ ИМЯ СОДЕРЖИТ МЕНЬШЕ СИМВОЛОВ, СВОБОДНЫЕ ЯЧЕЙКИ ЗАПОЛНЯЮТСЯ ПРОБЕЛАМИ.
  • 8-9 — НАЧАЛЬНЫЙ АДРЕС РАЗМЕЩЕНИЯ ПРОГРАММЫ ПРИ СЧИТЫВАНИИ ЕЕ ИЗ ДИСКА В ОЗУ — АДРЕС «ПОСАДКИ».
  • А-В — РАЗМЕР ФАЙЛА. В ЭТОТ ПАРАМЕТР ОГЛАВЛЕНИЕ ФАЙЛА(16 БАЙТ) НЕ ВХОДИТ.
  • С — БАЙТ ФЛАГОВ. В «ORDOS» V2.X ИСПОЛЬЗУЕТСЯ ТОЛЬКО БИТ D7. СОСТОЯНИЕ 1 УКАЗЫВАЕТ НА ТО, ЧТО ФАЙЛ ЗАЩИЩЕН ОТ УНИЧТОЖЕНИЯ. ОСТАЛЬНЫЕ БИТЫ ЗАРЕЗЕРВИРОВАНЫ ДЛЯ РАСШИРЕНИЯ. ИЗМЕНЕНИЕ СОСТОЯНИЯ БИТА D7 ПРОИЗВОДЯТ ВНЕШНИЕ ЗАГРУЖАЕМЫЕ ДИРЕКТИВЫ ОПЕРАЦИОННОЙ СИСТЕМЫ.
  • D-F — СЛУЖЕБНЫЕ ЯЧЕЙКИ СИСТЕМЫ.

Аналогично и в операционной системе ORDOS: оглавление файла всегда начинается с адреса, кратного 16. Если предыдущий файл не имел кратную длину, ORDOS его округляет. Оглавление следующего файла будет всегда начинаться с адреса, кратного 16. Оглавление следующего файла будет всегда размещаться как бы на следующей строке. Если взять за точку отсчета начальный адрес «тела» файла (0010Н), а он на 16 (10Н) ячеек больше, чем начальный адрес оглавления файла (0000) (следующая строка после оглавления — см. таблицу 4), и прибавить к нему длину этого файла (в нашем примере 1FD0H), то легко отыскать начальный адрес оглавления следующего файла (1FE0H). В результате такого построения файловой структуры нет необходимости просматривать весь файл — можно вычислить адрес оглавления следующего файла и перейти в нужное место. Помимо того, что такая файловая структура наглядно просматривается директивой «D» МОНИТОРа, сокращается и время поиска файла на диске.

В конце последнего файла на диске — по адресу, где будет размещаться начало оглавления будущего файла — ORDOS, автоматически устанавливает «Стоп-байт» — 0FFH, который указывает на то, что дальше файлов нет и ячейка памяти диска по этому адресу относится уже к свободному пространству диска. По мере добавления или уничтожения файлов «Стоп-байт» соответственно перемещается.

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

В. СУГОНЯКО, В. САФРОНОВ

Московская обл.

ЛИТЕРАТУРА

  1. В. Э. Фигурнов. IBM PC для пользователя. — М.: Финансы и статистика, 1990.
  2. М. Уэйт, Дж. Ангермейер. Операционная система СР/М.- М.: Радио и связь, 1986.
  3. В. Сугоняко, В. Сафронов. Операционная система ORDOS для ПРК «Орион-128».- Радио, 1990. № 8, с.38.

Отсканировано с журнала Радио № 7 1991 г.

Отредактировано Лесных Ю. 2001 г.