OR DOS V2.4, Орион-128, работа в OR DOS, операционная система
OR DOS 2.4 для Ориона 128 для работы с Ром Диском
26/02/2022 Допилина Виталием из Автрахани, и полностью протестирована ORDOS 4.16. Которая работает на Орион Восточный Экспресс 512 с 512 к памяти и 1024!!! - 16 дисков при наличии 1024 к, и 8 дисков при наличии 512к. Скачать можно здесь...
ОР ДОС V2.0 сборка РОМ Диска
ORDOS занимает в Ром Диске объем 2кбт (первая микросхема), вместо нее можно ставить Монитор ЕХТ (В. Чистякова), но это уже другая история.
Стандарты ПО, адресов и портов
ORDOS4 - Описание программиста
Внешние программы и команды Ор Дос... расширяем сервис Ор ДОС
Операционная система OR DOS V2.4
Была Опубликована в журнале Радио № 7 1991 год
Ордос 2.4
С момента публикации перового варианта операционной системы OR DOS версии 2.00 прошел уже год. За это время авторы ее усовершенствовали, исправили ошибки и предлагают читателям новую версию - 2.4 (табл. 1). Помимо этого, нам хотелось бы рассказать о принципе расширения функций ORDOS (EXTENDED - система) и системных функциях операционной системы.
Аппаратно, РОМ ДИСК - это дополнительная плата подключаемая к порту F500
Подготовленные читатели знают, что в операционных
системах, к примеру в
СР/М-80 и MS DOS, есть механизм обработки пакетных файлов.
Называются они так потому, что содержат набор (пакет) команд в
символьном виде. По сути, это программа - на языке высокого уровня, в
которой пользователь предписывает операционной системе порядок действий,
которые она должна выполнять в автоматическом режиме.
Среди пакетных файлов есть <особые> - выполняемые при запуске и
инициализации операционной системы. При включении компьютера или
реинициализации операционная система просматривает каталог диска и, если
встречает пакетный <особый> файл с зарезервированным именем, выполняет
его, прежде чем вступить в диалог с пользователем. Выполнение пакетных
файлов не ограничивается только моментом Инициализации системы.
Пользователь может создать пакетный файл для каждого случая, в котором
приходится многократно вводить с клавиатуры одни и те же функции и
команды. Таким приемом можно автоматизировать процесс управления
компьютером.
В качестве механизма выполнения пакетных файлов в oперационной системе
СР/М-80 применяется специальная внешняя команда SUBMIT, для которой
создается текстовый файл с перечнем необходимых команд для выполнения. В
ОС MS DOS этот механизм уже вмонтирован в систему, поэтому достаточно
создать только текстовый файл и присвоить ему зарезервированное имя
AUTOEXEC. ВАТ, чтобы операционная система могла его опознать.
Мы лишь вскользь коснулись возможностей выполнения
пакетных файлов, поэтому советуем читателю для более углубленного
изучения этого вопроса обратиться к соответствующей литературе 11, 2J.
Теперь вернемся к OR DOS. Все сказанное ниже относится к операционной
системе версии 2.4, которую мы публикуем ниже, с программой МОНИТОР-2.
Наличие квазидиска в качестве внешней памяти накладывает определенные
ограничения на механизм выполнения пакетных файлов, т. к. в момент
включения компьютера и инициализации операционной системы ORDOS,
пакетный файл в квазидиске еще отсутствует. Небольшие размеры ORDOS не
позволяют расположить этот механизм в теле операционной системы, как это
сделано в MS DOS. Чтобы найти компромисс, авторы вмонтировали в ORDOS
только систему поиска и запуска программы с <особым> именем.
Рассмотрим более подробно последовательность действий ОС ORDOS с момента
включения компьютера.
Загрузчик программы МОНИТОР-2 считывает с ROM-диска первые 2 К его
содержимого и размещает их в адресах 0В300Н - 0BFFFH, после чего
передает управление по адресу 0BFFDH.
ОС ORDOS содержит внутри себя еще два загрузчика: <холодный> и <теплый>.
<Холодный> загрузчик (назван условно) проводит первичную инициализацию
операционной системы ORDOS после загрузки и формирует каналы управления.
До следующего перезапуска (нажатия клавиши <Сброс>) операционная система
к <холодному> загрузчику больше не обращается.
Второй загрузчик - <теплый> используется постоянно. Его назначение
обновлять (реинициализировать) командную часть ORDOS - ССР (процессор
команд) при каждом возврате из прикладной программы или внешней команды
в операционную систему. При этом <теплый> загрузчик считывает с
ROM-диска только ССР и размещает его на <своем> месте. Необходимо это на
тот случай, если ваша прикладная программа уничтожила процессор
КОМАНД.
Оба загрузчика по окончании работы передают управление процессору
команд, который начинает свою работу с поиска на диске В файла с именем
ЕХТ (от слова EXTENTION - расширение). Если поиск происходит сразу после
включения компьютера и диск В еще не форматирован или вовсе отсутствует,
в некоторых случаях возможно <зависание> системы. Чтобы блокировать эту
ситуацию или же просто не допустить поиск файла ЕХТ при запуске OR DOS,
следует удерживать л обую символьную клавишу перед отпусканием клавиши
<Сброс>.
Прежде чем рассматривать достоинства автоматического поиска и выполнения
файла ЕХТ (этот механизм мы будем условно называть EXTENDED - система,
т. е. система расширения), оговорим некоторые обязательные начальные
условия.
- ORDOS считывает ЕХТ-файл (файл с именем <ЕХТ>) по тем же правилам, что
и директива <LOAD>. Этот файл должен находиться на диске В. Если
необходимо, чтобы ЕХТ-файлу было передано управление, добавьте в конце
имени символ (ЕХТ).
таблица 2
23. 0bfb2h зарезервировано
24. 0bfb3h зарезервировано
23. 0bfb8h mxdsk - конеч.адрес программ.на диске
22. 0bfbbh ver - номер версия ос "ordos"
21. 0bfbeh adrp - изменение адреса "посадки" файла
20. 0bfc1h rmax - чтение максим. размера диска
19. 0bfc4h umax - запись максим.размера диска
18. 0bfc7h atfm - чтение атрибутов файла
17. 0bfcah watf - запись адресов <н/к> блока озу
16. 0bfcdh atf - чтение адресов размещения файла
13. 0bfd0h sdma - запись н/адреса буфера имени файла
14. 0bfd3h ldma - чтение н/адреса буфера имени файла 13. 0bfd6h wnd -
определение текущего диска
12. 0bfd9h rnd - чтение имени текущего диска
11. 0bfdch rdisk - чтение байта из диска
10. 0bfdfh wdisk - запись байта в диск
9. 0bfe2h stop - запись стол-слова в диск
8. 0bfe3h pscf - поиск файла в диске
7. 0bfe8h dirm - вывод каталога диска в буфер
6. 0bfebh renum - пл. переименования файла
5. 0bfeeh eras - пл. уничтожения файла
4. 0bff1h ofill - открыть последовательный файл
3. 0bff4h cfill - закрыть последовательный файл
2. 0bff7h wfile - пп.записи файла на диск
1. 0bffah rfile - пл.чтения -"- из -"-
0. 0bffdh starti db 0c3h вход в ос "ordos"
0bffeh stadr dw address адрес перехода
В этом случае файл должен заканчиваться командой RET (Ассембл.)
и не нарушать структуру стека. После выполнения (или только загрузки)
ЕХТ-файла управление будет возвращено ORDOS и на экране появятся
атрибуты диалога с пользователем.
- ЕХТ-файл может <затирать> процессор команд, однако для этого он
обязательно должен быть самозапускаемым, т. е. принимать управление и
поддерживать диалог с пользователем (если это необходимо).
Самый простой пример применения EXTENDED-систе-мы - это автоматическая
загрузка нового знакогенератора, учитывающего, например, национальные
особенности языка. Для этого файлу с таким знакогенератором присваивают
имя EXT. Напомним, что знакогенератор в ОЗУ размещается с адреса 0F000H
и имеет размер - три блока, т. е. до адреса 0F2FFH, поэтому необходимо
проследить, чтобы был установлен соответствующий адрес старта
(<посадки>) в реквизитах файла. Теперь, при каждом перезапуске системы,
внутренний знакогенератор будет замещаться новым из файла EXT.
Более сложный пример использования EXTENDED системы - выполнение функции
PRINT-SCREEN, т. е. <распечатки> содержимого экрана на принтере. Следует
только иметь в виду, что это будет графическая копия, а не символьная.
Как это можно сделать? Программе, которая будет распечатывать или
сохранять в виде файла на диске В изображение экрана, присваивают имя
ЕХТ$. Затем запускают программу, копию экрана
(допустим это игра) которой необходимо зафиксировать. В выбранный
сюжетный момент нажимают клавишу <Сброс>. Выполнение программы при этом
прервете ч, но на экране сохранится необходимая фаза изображения. После
сброса затем, естественчо, начнется инициализация ORDOS и EXTENDED -
система загрузит и передаст управление файлу ЕХТц который и будет
выводить информацию на печать, или создаст файл на диске В. По окончанию
работы управление операционной системе необходимо возвратить командой
RET, т. к. в стеке уже хранится адрес возврата. Если возвращаться в ОС
по команде безусловного перехода (JMP по адресу старта ORDOS),
операционная система не сможет выйти из цикла вызова ЕХТ-файла.
Еще более сложное применение EXTENDED-системы - это подмена ССР. т. е.
процессора команд. Вместо него можно автоматически загружать, к примеру,
SCREEN - COMMANDER (по примеру NORTON COMMANDER) - оболочку операционной
системы, в которой вместо директив используется удобные меню и окна.
EXTENDED - система, созданная авторами в ORDOS, позволяет выполнять и BATCH - файлы (пакетные файлы), однако эта возможность реализуется дополнительной специальной программой-интерпретатором - внешней командой операционной системы. Рассмотрение этой программы выходит за рамки данной публикации.
СИСТЕМНЫЕ ФУНКЦИИ ОС ORDOS
В одной из предыдущих статей [3] мы рассказывали о
структуре операционной системы ORDOS. Напомним кратко. ORDOS состоит из
трех составных частей: ССР - командный процессор, В DOS - базовая
дисковая операционная система и 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 используют в тех случаях, когда на момент создания файла
невозможно определить его размер, а содержимое накапливается по мере
работы другой программы. Например, можно в программе пользователя вывод
информации на дисплей заменить на накопление её в последовательном
файле. Вызов функции первый раз производит от
Имя файла может содержать не более восьми символов. В конце используется
пробел или возврат каретки.
Информация о текущем диске и начальном адресе буфера имени файла не
изменяется другими функциями, поэтому может быть определена в программе
пользователя только один раз. Однако в примерах, поясняющих принцип
вызова других функций ORDOS, мы будем постоянно включать и эти функции
для наглядности.
Вернемся к функциям, работающим с файлами (функция 1).
Файл в ОЗУ размещается начиная с адреса <посадки>,
который хранится в оглавлении. Самозапуск эта функция не производит.
Перед вызовом функции 2 необходимо занести в служебные ячейки ORDOS
информацию о начальном и конечном адресах массива ОЗУ, который
предполагается записать на диск в виде файла. Это выполняет функция 17.
Функцию 4 используют в тех случаях, когда на момент создания файла
невозможно определить его размер, а содержимое накапливается по мере
работы другой программы. Например, можно в программе пользователя вывод
информации на дисплей заменить на накопление её в последовательном
файле. Вызов функции первый раз производит отАдрес буфера, в котором
будет размещаться каталог диска, должен содержать ноль в качестве
младшего символа. Например: 1000Н, 7020Н, 9880Н и т. д. Функция 7
переписывает оглавление каждого файла в буфер, не изменяя его структуру.
Вспомогательная функция 8 выполняется в составе предыдущих, однако может
использоваться и автономно.
Функция 19 позволяет ограничить максимальный размер диска В. Один из
примеров применения функции - ограничение объема диска при работе
компьютера в цветном режиме. В этом случае устанавливается максимальный
адрес - 0BFFFH.
Функция 21 выполняется только с диском В.
Функции 12, 14, 16, 18, 20, 22, 23 - информационные.
Входы функций 24 и 25 зарезервированы.
Рассмотрим подробнее структуру файла, а также размещение их на диске.
Использование в качестве внешней памяти квазидиска резко упростило операционную систему: отпала необходимость оперировать секторами, дорожками и другими атрибутами гибкого магнитного диска. Благодаря этому, в квазидиске (и в ROM-диске тоже) файлы размещаются цельно и последовательно друг за другом. В начале каждого файла находится его оглавление - служебная часть, занимающая 16 байт. Назначение каждого байта в оглавлении определено в табл. 3.
ТАБЛИЦА 3
0 - 7 - ИМЯ ФАЙЛА. МОЖЕТ СОДЕРЖАТЬ НЕ БОЛЕЕ 8 СИМВОЛОВ. ЕСЛИ ИМЯ
СОДЕРЖИТ МЕНЬШЕ СИМВОЛОВ, СВОБОДНЫЕ ЯЧЕИКИ ЗАПОЛНЯЮТСЯ ПРОБЕЛАМИ.
8 - 9 - НАЧАЛЬНЫЙ АДРЕС РАЗМЕЩЕНИЯ ПРОГРАММЫ ПРИ
СЧИТЫВАНИИ ЕЕ ИЗ ДИСКА В ОЗУ - АДРЕС "ПОСАДКИ".
А - В - РАЗМЕР ФАЙЛА. В ЭТОТ ПАРАМЕТР ОГЛАВЛЕНИЕ ФАЙЛА (16 БАЙТ) НЕ
ВХОДИТ.
С - БАЙТ ФЛАГОВ. В "ORDOS" V2. X ИСПОЛЬЗУЕТСЯ
ТОЛЬКО БИТ D7. СОСТОЯНИЕ "1" УКАЗЫВАЕТ НА ТО, ЧТО ФАЙЛ ЗАЩИЩЕН ОТ
УНИЧТОЖЕНИЯ. ОСТАЛЬНЫЕ БИТЫ ЗАРЕЗЕРВИРОВАНЫ ДЛЯ РАСШИРЕНИЯ. ИЗМЕНЕНИЕ
СОСТОЯНИЯ БИТА D7 ПРОИЗВОДЯТ ВНЕШНИЕ ЗАГРУЖАЕМЫЕ ДИРЕКТИВЫ ОПЕРАЦИОННОЙ
СИСТЕМЫ. Например программой STAT$ из
пакета ОР ДОС
БИТ D7 - бит защиты от стирания - это адрес 0C заголовка функция R/O или R/W , бит 7=1 скрытый бит 0=1 этого же адреса 0C. Об этом на примере приведем пример.
D - F - СЛУЖЕБНЫЕ ЯЧЕЙКИ СИСТЕМЫ.
Чтобы легче понять структуру файла (табл. 4), представим ее в виде дампа памяти. В дампе каждая строка начинается с адреса, последний символ которого имеет нулевое значение. Аналогично и в операционной системе ORDOS:
оглавление файла всегда начинается с адреса, кратного
16. Если предыдущий файл не имел кратную длину, ORDOS его округляет.
Оглавление следующего файла будет всегда начинаться с адреса, кратного
16. Оглавление следующего файла будет всегда размещаться как бы на
следующей строке. Если взять за точку отсчета начальный адрес <тела>
файла (0010Н), а он на 16 (ЮН) ячеек больше, чем начальный адрес
оглавления файла (0000) (следующая строка после оглавления - см. таблицу
4), и прибавить к нему длину этого файла (в нашем примере 1FD0H), то
легко отыскать начальный адрес оглавления следующего файла (1FE0H). В
результате такого построения файловой структуры нет необходимости
просматривать весь файл - можно вычислить адрес оглавления следующего
файла и перейти в нужное место. Помимо того, что такая файловая
структура наглядно просматривается директивой <D> МОНИТОРа, сокращается
и время поиска файла на диске.
В конце последнего файла на диске - по адресу, где будет размещаться
начало оглавления будущего файла - ORDOS, автоматически устанавливает <Стоп-байт>
- 0FFH, который указывает на то, что дальше файлов нет и ячейка памяти
диска по этому адресу относится уже к свободному пространству диска. По
мере добавления или уничтожения файлов <Стоп-байт> соответственно
перемещается.
При записи на диск (конечно, это может быть только диск В) новых файлов
последние добавляются в конец всего массива, а при уничтожении
последующие файлы смещаются на место уничтожаемого. Таким образом,
дисковое пространство постоянно оптимизируется и не допускается наличие
<пустот>.
В. СУГОНЯКО, В. САФРОНОВ Московская обл.
Внутренние команды Ор Дос
F(ORMAT) - ПОДГОТОВКА ("ФОРМАТИРОВАНИЕ")"КВАЗИДИСКА"
D(IR) - ВЫВОД КАТАЛОГА ДИСКА НА ЭКРАН ДИСПЛЕЯ
L(OAD) - ЧТЕНИЕ ФАЙЛА ИЗ ДИСКА В ПАМЯТЬ КОМПЬЮТЕРА
S(AVE) - ЗАПИСЬ УЧАСТКА ПАМЯТИ В КАЧЕСТВЕ ФАЙЛА НА ДИСК
R(EN) - ПЕРЕИМЕНОВАНИЕ ФАЙЛА
E(RA) - УДАЛЕНИЕ ФАЙЛА, ХРАНЯЩЕГОСЯ НА ДИСКЕ
Т(УРЕ) - ПРОСМОТР ТЕКСТОВЫХ ФАЙЛОВ
ЛИТЕРАТУРА
1. В. Э. Фигурнов. IBM PC для пользователя.- М.: Финансы
и статистика, 1990.
2. М. Уэйт, Дж. Ангсрмейср. Операционная система СР/М.- М.: Радио и
связь, 1986.
3. В. Сугоняко, В. Сафронов. Операционная система ORDOS для ПРК
<Орион-128>.- Радио, 1990, № 8, с. 38.
ОРДОС 4.03 - описание
Пример скрытых файлов и файлов защищеных от стирания и записи
Как работает программа STAT$ под ОРДОС
Теперь на примере программы BASIC$ скрытые и защищенные файлы для ОР ДОС
Заголовок программы со значением R/W
Заголовок программы со значением R/O, файл статус только чтение, защита от удаления. Нельзя удалить с квазидиска.
Файл R/O отображение в OR DOS (после размера файла стоит "точка")
Файл R/O отображение в NC$
Удаление файла со статусом R/O, файл со статусом R/O не удаляется и остается на месте
Заголовок программы со значением "Скрытый файл"
Скрытый файл ОР ДОС его видит
NC$ и VC$ - скрытые файлы не видит
Работа в CP/M-80 программы и железо
На предыдущую страницу На главную страницу На следующую страницу