Орион-128/Радио 01,02-93/SPDOS
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: М. Короткин. Источник: http://retro.h1.ru/Orion/SpDOS/SpDOS.php |
Основой программного обеспечения контроллера НГМД для ПРК «ОРИОН-128» является дисковая операционная система SPDOS. Она оформлена как загружаемая команда ORDOSи располагается на ROM диске под именем SPCHAN$ (Special DOS CHANger). В данной ОС просматривается иерархическая структура системного программного обеспечения, которую можно разделить на три части:
- ССР — интерпретатор команд,
- BDOS — базовая дисковая операционная система,
- BIOS — базовая система ввода/вывода (только дисковые подпрограммы).
Интерпретатор команд обеспечивает непосредственное взаимодействие пользователя с системой, то есть дешифрирует вводимые команды и направляет их на исполнение BDOS, которая содержит основные подпрограммы, осуществляющие обмен с накопителем на уровне файлов. BIOS, в свою очередь, выполняет команды BDOS. Данная система ввода/вывода содержит подпрограммы, обеспечивающие взаимодействие с контроллером на самом низком уровне (программирование БИС КР1818ВГ93).
SPDOS необходимо разместить на ROM диске [1]. Для этого достаточно будет двух ПЗУ 573РФ2 (РФ5), которые необходимо запрограммировать в соответствии с табл. 1. Поблочные контрольные суммы для этой программы приведены в табл. 2. На диске А появится новый файл SPCHAN$. Он содержит все необходимые команды для работы с гибким диском.
При работе с операционной системой следует помнить о том, какие области памяти она занимает: SPDOS загружается с ROM диска с адреса 9000Н, при работе использует служебные ячейки 9F80H-9FFFH;и буфер 8C00H-8FFFH, размещает каталог с А000Н по A7FFH. При форматировании используется область данных размером около 6 Кбайт с адреса 7000Н.
Таблица 2
0000 - 00FF: 6EEC 0700 - 07FF: 527D 0100 - 01FF: ВЕЗС 0800 - 08FF: 31ВЕ 0200 - 02FF: 314Е 0900 - 09FF: 6980 0300 - 03FF: 818Е 0A00 - 0AFF: C056 0400 - 04FF: 6878 0B00 - 0BFF: AC44 0500 - 05FF: 8677 0C00 - 0CFF: 91FD 0600 - 06FF: D9E1 0D00 - 0D93: 58DA
Рассмотрим физическую и логическую организацию диска. Как уже отмечалось, КР1818ВГ93 поддерживает большинство стандартных форматов. Достаточно подробно об этом было рассказано на страницах журнала [2], поэтому отметим лишь специфику данного программного обеспечения. При операции форматирования происходит следующая разметка диска:
- две стороны,
- двойная плотность,
- 80 дорожек,
- 5 секторов на одну сторону дорожки,
- размер сектора 1 Кбайт.
В соответствии с этим получаем общий информационный объем: 80 x 2 x 5=800 Кбайт. Полученная таким образом дискета может эксплуатироваться на других компьютерах, основные отличия возникают лишь на более высоком уровне рассмотрения диска — в его логической структуре (она приведена в табл. 2).
Таблица 2
Дорожки | Содержание | Размер, Кбайт | Блоки | |
0 | Резерв | 10 | 0-9 | |
1 | 1-2 | Резервный каталог | 2 | 10-11 |
1 | 6-7 | Основной каталог | 2 | 15-16 |
2-79 | Область данник | 780 | 20-799 |
Рассмотрим структуру каталога. Он состоит из 78 записей, содержимое которых практически совпадает с каталогом ORDOS:.
- 8 байт ИМЯ ФАЙЛА (если первый байт Е5Н, то это удаленный файл, если первый байт 0 — конец каталога);
- 2 байта НАЧАЛЬНЫЙ АДРЕС (адрес посадки в память);
- 2 байта РАЗМЕР ФАЙЛА (в байтах);
- 1 байт АТРИБУТЫ ФАЙЛА (см. табл. 3);
- 3 байта РЕЗЕРВ.
Таблица 3
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
protect | 0 | 0 | format | 0 | 0 | 0 | 0 |
На диске может быть записано 78 файлов. Остальное место в каталоге занимает служебная информация об их размещении. Она собрана в таблицу размером 780 байт и начинается с адреса A4F0H. Условно пронумеровав эти байты от 20 до 799, получим прямое соответствие между байтом из таблицы и блоком из области данных диска (см. табл. 2). Содержимое каждого байта отражает содержимое соответствующего блока. Если байт Е5Н, это обозначает, что блок свободен. Если он имеет значение FEH—дефектный блок. Равенство байта числу от 1 до 78 говорит о принадлежности информации этого блока файлу, порядковый номер которого по каталогу равен этому числу. Содержимое таблицы модифицируется только при записи нового файла. Обновление области памяти, в которой расположен каталог, происходит перед каждой операцией с диском.
Теперь перейдем к подробному рассмотрению работы SPDOS.
Она запускается с ROM -диска обычными средствами, например, командой ORDOS :
L SPCHAN$.
Появится название системы:
SP-CHANGER V3.6 (с) 1991 BY MS RESEARCH
и приглашение к вводу команды:
С>
(символ С обозначает гибкий диск). Все вводимые команды имеют следующий формат:
<0днобуквенное имя команды> <Н>, <Н>, <Н>, <Н> <пробел> <имя1> <пробел> <имя2>.
Здесь
- Н — числовые параметры (до 4), заданные в шестнадцатиричном виде (при пропуске параметра он получает значение 0000),
- Имя — цепочка символов (до 8).
Познакомимся теперь с командами SP — CHANGER. Начнем с форматирования дискет. В нашем случае это могут быть любые дискеты— двусторонние, двойной плотности.
Fs , TR 1, TR2 — ФОРМАТИРОВАНИЕ ДИСКЕТЫ;
s — сторона диска (0 или 1; если 2, то обе стороны), ;
TR 1, TR 2 — начальная и конечная дорожки (0-4F , 0-4F).
При ответе на вопрос ARE YOU SURE (Y/N)? («Вы уверены?») Y («Да») выполняется форматирование с проверкой, иначе выполняется только проверка. Полное форматирование диска осуществляется командой F2,,4F или в полном виде F2,0,4F.
При обнаружении дефектной области выдается сообщение:
TRACK: NN HEAD: S FIRST BAD SECTOR: SS,
где NN. S и SS — координаты дефектного блока (соответственно дорожка, сторона и сектор). Проследите, чтобы дорожка 01 отформатировалась полностью. Прерывание форматирования производится клавишами F4 или УС+С.
С остальными командами вам придется иметь дело чаще. Вот эти команды.
Dd-(Dir disk) ВЫВЕСТИ КАТАЛОГ ДИСКА А, В или С
d —название диска (А, В или С).
Пример: ОС — распечатать каталог гибкого диска.
Формат вывода:
ИМЯ ФАЙЛА АААА ;SIZE { P / F}
- АААА — адрес загрузки по умолчанию (адрес посадки в память);
- SIZE — размер файла в байтах;
- Р — файл защищен от стирания;
- F — фиктивный файл.
Каталоги дисков А и В выводятся аналогично.
Sadr 0, adr 1, atr ИМЯ — (Save) ЗАПИСЬ ФАЙЛА
На диск запишется целое число килобайт, включающее блок памяти с адреса adr 0 по адрес adr 1, файлу присваиваются атрибуты atr, которые могут иметь значения:
- 80 — защищен от стирания;
- 10 — фиктивное создание файла (запись только в каталог).
Максимальный размер файла 0- FFFEH, что составляет 64 (40Н) Кбайт. Если операция сильно затягивается из-за поиска не дефектных блоков, ее можно прервать нажатием клавиши ESC (AP2).
Ladr, atr ИМЯ — (Load) ЗАГРУЗКА ФАЙЛА
- atr — атрибуты загрузки;
- 1 — загрузить по адресу adr ,
- 2 — автозапуск после загрузки.
Без атрибутов или с атрибутом 2 программа загружается по адресу, указанному в каталоге. Следите, чтобы загружаемый файл не попадал в память по адресам расположения операционной системы и ее служебных областей. После успешной загрузки выводится информация об адресе посадки и количестве прочитанных блоков (в отличие от ORDOS специального смысла в имени файла символ $ не несет, и файлы с именами ИМЯ и ИМЯ$ для данной системы различны).
Теперь остановимся на командах копирования файлов.
I — (lnput) КОПИРОВАНИЕ ФАЙЛОВ с диска С на диск В.
На запросы NAME : вводить имена читаемых файлов. Выход из команды — нажатие клавиши ВК.
О — (Output) КОПИРОВАНИЕ ФАЙЛОВ с диска В на диск С.
Диалог аналогичен команде Input.
Выполнение команд Input и Output сопровождается выводом информации о размере передаваемого файла (в байтах). Рекомендуется пользоваться именно этими командами, так как они меньше всего конфликтуют с загружаемыми программами. Например, с магнитофона загружен на квазидиск файл ASSM $. Скопировать его на дискету можно командой O:
С>O NAME: ASSM$ NАМЕ : <ВК> С>
Загружать этот файл с дискеты командой L нельзя так как его адрес посадки совпадает с адресом SPCHAN$. Поэтому загрузите его командой I :
C>I NAME: ASSM$ NAME: <BK> С>
Теперь, выйдя из SPDOS , его можно запустить обычными средствами ORDOS с квазидиска. Вообще работа с SPDOS может носить сеансовый характер: грузите необходимые файлы на квазидиск, работаете с ними, а затем сохраняете результаты работы на дискете.
При выполнении команд S и O может оказаться что файл с таким именем уже существует на диске С. В этом случае система попросит подтвердить операцию:
OVERWRITE? (Y/N).
При ответе Y («Да») система удалит старый и запишет новый файл.
G ADR — (Go) Запуск программы находится в ОЗУ, с адреса ADR (возврат в систему может быть по команде RET)
Следующие команды работают только с диском С:
- Е — (Erase) Стереть файл (место, занятое файлом, освобождается).
- Р — (Protect) Защита файла от стирания.
- U — (Unprotect) Снятие защиты от стирания, поставленное командами S или Р.
- Т — (Туре) Вывод текстового файла на экран
- R — стapoe имя новое имя — (Rename) Переименование файла.
- M — (about Me) Информация о разработчике.
Выход в ORDOS — нажатие ВК.
При выполнении команд возможны ошибки. Информация о них приведена в табл. 4.
Таблица 4
- 00 БЕЗ ОШИБОК
- 01 ОШИБКА ЧТЕНИЯ/ЗАПИСИ КАТАЛОГА
- 02 НЕТ МЕСТА В КАТАЛОГЕ (БОЛЕЕ 78 ФАЙЛОВ)
- 03 НЕТ МЕСТА НА ДИСКЕ
- 04 НЕТ ТАКОГО ФАЙЛА
- 05 ОШИБКА ЧТЕНИЯ/ЗАПИСИ ФАЙЛА
- 06 ФАЙЛ ЗАЩИЩЕН
- 07 НЕТ ТАКОЙ ФУНКЦИИ
- 08 НЕПРАВИЛЬНАЯ КОМАНДА
- 09 ТАКОЙ ФАЙЛ УЖЕ СУЩЕСТВУЕТ
- 11 ОШИБКА РАЗМЕЩЕНИЯ ФАЙЛА
- 40 ДИСК ЗАЩИЩЕН ПО ЗАПИСИ
- 80 ДИСКОВОД НЕ ГОТОВ
Большинство программ, написанных для ПРК «ОРИОН-128», используют в работе квазидиск В. Поэтому можно ограничиться использованием данной ОС как программы обмена данными между квазидиском и гибким диском. Однако можно предположить желание пользователя данного контроллера создавать программы, осуществляющие непосредственное взаимодействие с дисковой системой SPDOS. Для этого регламентированы подпрограммы, облегчающие общение прикладных программ с файловой системой. Далее представлены точки входа этих подпрограмм (адреса даны как смещения от 9000Н):
0Н ;START —запуск операционной системы SPDOS;
3Н EXIT> —возврат в систему из пользовательской программы (командой JMP 9003 ;H); прикладная программа, не нарушающая стек, может выйти в систему командой RET . Входные параметры: А: ошибка завершения (см. табл. 4) А=0: без ошибок
6H ERRMSG> — печать сообщения об ошибке.
Входные параметры: А: код ошибки
9Н GETNAM — запрос строки с клавиатуры и помещение ее в системный буфер Выходные параметры: строка: цепочка из 8 любых символов, начиная с адреса, указанного в ячейках со смещением 0СH, 00Н. 0СH, 00Н — 2 байта: указатель на начало командной строки
0EH FCALLS> — вызов функции ОС Входные параметры: А: номер функции.
А-1 Чтение файла
Входные параметры:
- HL — указатель цепочки из 8 символов (имя файла), ограничителем имени может быть любой символ, код которого меньше 20Н, 0Е- принудительный адрес посадки читаемого файла
- С-1: загружать с DE
- С-2: автозапуск после загрузки.
При С не равно 1 параметр DE игнорируется.
Выходные параметры:
- А: код ошибки (см. табл. 4)
- В: атрибуты файла (см. описание команды S)
- С: размер файла (в блоках)
- DE : реальный адрес посадки
- НL : адрес посадки по умолчанию
А-2 Запись файла
Входные параметры:
- НL , DЕ см. выше
- С: количество блоков (Кбайт)
- В: атрибуты файла
Выходные параметры:
- А: код ошибки,
А-3 Удалить файл
Входные параметры: ;
- HL см. выше
Выходные параметры:
- А: код ошибки
А-4 Прочитать атрибуты
Входные параметры: ;
- HL см. выше
Выходные параметры:
- См. «Чтение файла»
А-5 Записать атрибуты/Переименовать файл
Входные параметры:
- HL см. выше ;
- DE : указатель на новое имя файла (аналогично HL)
- В: атрибуты (если HL — DE). Если HL не равен DE , то выполняется переименование, иначе — запись атрибутов
Выходные параметры:
- А. код ошибки
А=6 Форматировать/Проверять дорожку
Входные параметры:
- М(НL)='Y ': форматировать и проверять, =' N': только проверять
- Е: номер дорожки (0—4FH)
- С: сторона (0/1)
Выходные параметры:
- А: 08Н — ошибка контрольной суммы, 10Н — ошибка поиска
- В: первый плохой сектор
А-7 Определение блока памяти для записи (выполнять перед функцией 2)
Входные параметры:
- HL : начальный адрес;
- DЕ : конечный адрес
Выходные параметры:
- А: размер блока в килобайтах
А-8 Получение размера файла (выполнять сразу после функций 1 и 4)
Выходные параметры:
- HL : размер файла в байтах
А-9 Установка адреса посадки записываемого файла (выполнять перед функцией 2)
Входные параметры:
- HL : адрес посадки.
После успешного завершения записи установка сбрасывается.
Принудительный сброс — вызов функции с параметром FFFFH.
При сброшенной установке адрес посадки создаваемого файла будет равен начальному адресу записываемого блока.
- 11Н байт версия системы (З6Н).
- 12Н, 13Н 2 байта: указатель на первое имя в командной строке.
- 14Н, 15Н 2 байта: указатель на второе имя в командной строке.
Вызов FCALLS с несуществующим номером функции возвращает код ошибки 07.
Литература
- Сугоняко В., Сафронов В. Операционная система ORDOS. Версия 2. 4. — Радио, 1991, № 7, с. 49-54.
- Ахманов С., Рой Н., Скурихин А. Пользователю о «Корвете». — Радио, 1989, № 6, С34 — 37.
М. Короткин.
г. Москва.