Орион-Про/OS-DOS/Руководство пользователя и программиста

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

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

Автор: © Orionsoft, OS-DOS BIOS Release 3.60, 1995

Отличительные особенности от предыдущих версий

  • Полностью исключены внутренние команды BIOS за ненадобностью.
  • Унифицирована система подключения внешних драйверов.
  • Обеспечена высокая скорость и надежность доступа к диску.
  • Автоматическая обработка пакетного файла AUTOEXEC.BAT при холодном старте.
  • Выполнение .BAT и .BRU-файлов наравне с .COM-файлами.
  • Введена возможность использования дополнительных страниц памяти под электронный диск размером 120Кб.
  • Псевдо-аппаратный ввод с клавиатуры, семи- и восьмибитные кодировки символов при выводе, не исчезающий курсор и полная эмуляция терминала DEC VT-52 за счет возможностей внешних драйверов консоли.

Итак, как Вам наверное уже стало понятно из всего вышеперечисленного, концепция подхода фирмы «Orionsoft» к операционной среде CP/M-80 достаточно сильно изменилась в отличие от всех наших предыдущих, или вводных, версий OS-DOS с BIOS V2.3X/2.4X/2.6X, которые предназначались главным образом для ознакомления наших пользователей с операционной системой CP/M и последовательному переходу из ORDOS в CP/M — систему более высокого уровня, которая позволит Вам использовать богатое прикладное и математическое обеспечение с других CP/M-совместимых машин. В мире было наработано очень много пакетов программ для использования в этой операционной системе — около 20 000 (еще в 1986 году за рубежом считалось, что программ в CP/M больше, чем в MS-DOS). Но для использования всех этих программных продуктов необходимо, прежде все-го, чтобы используемая Вами версия CP/M позволяла им работать в соответствии с заложенными возможностями. И если предлагаемые раньше версии OS-DOS не обладали полноценными возможностями для серьезной работы в них программистов и просто пользователей (а гамма программного обеспечения в CP/M настолько широка, что удовлетворит любые запросы), то данная версия предназначена именно для активной работы в CP/M-среде.

В связи с этим мы отказались от использования в BIOS внутренних команд, потребность в которых отпала с введением возможностей подключения к системе внешних драйверов, а такая возможность, как включение цвета в OS-DOS 60Кб вообще чаще мешала работе программ, чем была нужна. Поэтому: в нынешней версии OS-DOS нажимать клавишу F1 для вызова режима промпта бесполезно - код этой клавиши просто будет передан системе, как и код любой другой клавиши. Соответственно, совершенно бесполезно указывать промпт-команды в файле AUTO-EXEC.BAT — они будут восприняты как ошибочные. А те возможности, которые Вам предоставляли эти команды, теперь реализуются внешними драйверами, причем на порядок лучше (те же функции отображения курсора, смены его формы, включение разных кодировок и, наконец, эмуляция разных терминалов).

И еще. Данная система существует только в одном варианте - 60Кб. Это обусловлено тем, что при работе в укороченной 48Кбайтной версии невозможно пользоваться прикладным матобеспечением CP/M в связи с нехваткой памяти для программ, которым, как правило, требуется не менее 45-49 Кбайт TPA, что может обеспечить только полная 60Кбайтная версия OS-DOS. По тем же причинам вся работа в CP/M теперь будет монохромной, то есть цвет включить нельзя. Но это, конечно же, не страшно, поскольку во-первых, среди программного обеспечения в CP/M нет цветных программ (а те, что написаны специально для Ориона, например NC.COM или PGM.COM, включают цвет сами), а во-вторых, вся функция цвета в предыдущем BIOS V2.61 сводилась к банальному включению голубого фона и ярко-белых символов, что, кстати, приводит к быстрому уставанию глаз из-за сильного мерцания монитора (кадровая частота ведь всего 50Гц).

Это все, что касается отсутствия некоторых, пусть и несущественных, возможностей от предыдущих версий OS-DOS. Далее будут описаны новые возможности и немного модифицированные старые. Мы рекомендуем внимательно прочесть эту информацию, даже если что-то покажется уже знакомым.

Автозапуск при «холодном» старте

Если при запуске OS-DOS вам приходится постоянно запускать вспомогательные программы (драйверы клавиатуры, экрана, квазидисков и т. д.), или выполнять одну и ту же последовательность команд OS-DOS, то можно занести их в текстовый файл, названный AUTOEXEC.BAT, и разместить его на загрузочной дискете. Принцип Вам уже знаком по файлу «SETUP.TX» для «ORDOS» V4.XX. Прерывается выполнение командного файла удерживанием нажатой любой символьной клавиши, причем можно как пропустить выполнение отдельных строк этого файла, нажимая клавишу в нужные моменты при обработке файла, так и отказаться от выполнения всего файла вообще, для чего следует при холодном старте системы сразу после вывода на экран заставки OS-DOS нажать любую клавишу (кроме РУС-/LAT, Shift и Ctrl) и удержать ее до звукового сигнала из динамика. После отпускания клавиши система переходит в режим ввода команд.

Кроме файла AUTOEXEC.BAT, имя которого зарезервировано, система позволяет обрабатывать (но уже не при холодном старте, а в процессе работы) аналогичные командные файлы с зарезервированным расширением .BAT, которые можно запустить на выполнение также как и .COM-файлы. Разница лишь в том, что при запуске .COM-файла расширение опускается, а при запуске на выполнение .BAT-файла расширение обязательно вводится (например: A>MACROS.BAT <ВК>).

Наличие возможности выполнять .BAT-файлы в командном режиме позволяет упростить процесс запуска сложных систем программ, а так же упростить длинные, монотонно повторяющиеся управленческие операции.

К примеру. Пользователь пишет программы на ассемблере под управлением CP/M. Процесс получения объектного кода (кода, пригодного для выполнения процессором) значительно сложнее, чем под «ORDOS» и состоит из нескольких этапов. Во-первых, вызывается редактор, где в командной строке указывается имя файла для редактирования. После написания программы запускается транслятор ассемблера и в командной строке также указывается имя ранее созданного редактором файла (некоторые трансляторы требуют указать еще и имена файлов, которые будут созданы в процессе работы) и ключи управления. После трансляции получается всего лишь промежуточный код, который преобразовывается в исполняемый (объектный) с помощью программы-сборщика LINK, которая тоже имеет свой синтаксис вызова. Если учесть, что программу приходится многократно исправлять, то становится очевидно — какую рутинную работу выполняет программист.

Все это можно автоматизировать, если создать .BAT-файл для каждого этапа написания (или редактирования) и трансляции файла.

Следует только иметь в виду, что данная .BAT-система не позволяет создавать многократно вложенные .BAT-файлы, то есть вызывать дополнительные .BAT-файлы как подпрограммы в основном .BAT-файле. В данном варианте при выполнении дополнительного .BAT-файла управление к оставшейся части основного .BAT-файла не передается. Тем не менее это ограничение не мешает создавать .BAT-файлы для большинства случаев. Если же потребуются более сложные Вари-анты — необходимо применять программу «SUBMIT.COM», собственно возможности которой (в весьма урезанном виде, без подстановки параметров) и реализуются внутренней системой OS-DOS.

Пакетный файл можно написать любым текстовым редактором. В том числе «EDIT$» или «AVI$» в ORDOS (в этом случае файл на диск записывается директивой «SAVE» в OS-DOS 48K), но лучше и это будет более естественно все-таки воспользоваться редактором в CP/M (на дистрибутивном диске приложен редактор WordMaster в файле WM.COM).

При написании командного файла каждая командная строка пишется отдельной строчкой и заканчивается возвратом каретки ВК.

Директивой «TYPE» Вы можете посмотреть на нашем дистрибутивном диске содержимое .BAT-файла с тем, чтобы лучше понять его построение.

Как и говорилось выше, данная версия OS-DOS не обрабатывает ни в прямом режиме, ни в .BAT-файле внутренние команды BIOS предыдущих версий, поэтому в .BAT-файле допустимы только команды CCP, синтаксис которых ничем не отличается от их ручного ввода. Для примера — .BAT-файл для ассемблирования и создания .COM-файла:

Содержимое файла .BAT :                      Комментарий к действиям:
                                           |
WM PROGRAM.ASM                             | запуск редактора
M80 =PROGRAM.ASM                           | запуск ассемблера
L80 /P:100,PROGRAM.REL,PROGRAM.COM/N/E     | запуск сборщика
ERA PROGRAM.REL                            | удаление промежуточного файла
PROGRAM                                    | запуск готовой программы

Как Вы видите, здесь имя рабочего файла с текстом программы фиксировано (PROGRAM.ASM), и для ассемблирования другого файла это имя придется заменить. Поэтому для создания универсального командного файла следует использовать возможности подстановки параметров, предоставляемые программой SUBMIT, но при этом для выполнения командного файла с помощью SUBMIT сама программа SUBMIT.COM должна быть на диске и, кроме того, диск в дисководе A: не должен иметь защиту по записи. А для работы с внутренней системой обработки .BAT-файлов эти условия становятся совершенно излишними. Поэтому для любого конкретного случая всегда легко решить, использовать ли внутреннюю систему или возможности SUBMIT.COM .

Запуск (загрузка) файлов ORDOS

Для любителей работать в ORDOS мы ввели возможность запуска файлов ORDOS (.BRU-файлы) прямо в BIOS. Таким образом Вы можете, набрав в командной строке OS-DOS имя любого .BRU-файла (будь то игра или системная программа), перегрузить этот файл в диск «B» ORDOS и, при необходимости, сразу запустить, то есть BIOS выполнит функции программы EXBRU.COM, которая становится при этом совершенно излишней. При этом у Вас есть следующие возможности:

a) ORDOS-файл не самозапускаемый (нет префикса $ в имени файла). В этом случае файл будет просто перегружен в RAM-диск ORDOS и Вы окажетесь в ORDOS для последующей работы с этим файлом.

b) ORDOS-файл является самозапускаемым. Тогда, если Вы просто набрали имя файла в командной строке OS-DOS без параметров, файл будет перегружен в RAM--диск и при этом автоматически переименован в EXT$ для последующего самозапуска при выходе в ORDOS (что удобно для запуска игровых программ). Если же автозапуск с переименованием не нужен, для таких файлов следует в командной строке после имени файла через пробел ввести символ «L» (от слова «LOAD» — загрузить), тогда файл обрабатывается аналогично пункту a) .

Примеры:

A>BLOCK <ВК>       -  загрузить  в  RAM-диск  ORDOS  файл  BLOCK.BRU
A>TETRIS$ <ВК>     - загрузить и запустить файл TETRIS$.BRU 
A>B:PITON$ L <ВК>  - загрузить без автозапуска файл PITON$.BRU с диска B:

Замечания.

  1. При наборе имени .BRU-файла расширение не вводится, а вот символ «$», если он присутствует в имени файла, обязателен.
  2. Если при чтении файла возникнет ошибка или файл будет размером свыше 52Кб, загрузка прекращается и происходит теплый рестарт OS-DOS.
  3. Возможность запуска .BRU-файлов, заложенная в BIOS, ориентируется на то, что при передаче управления системному Монитору (0F800H) последний автоматически загрузит из ROM-диска ORDOS и передаст ей управление (стандартный режим работы).
  4. При запуске .BRU-файлов на исполнение (с префиксом $) возможна ситуация, когда запущенная ORDOS-программа использует цветовые возможности, но сама цвет не включает (рассчитывая на то, что он был включен до ее запуска), поэтому такие программы следует загружать с указанием ключа «L» для исключения самозапуска.

Внутренний электронный диск

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

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

В нашей системе Вы теперь можете также насладиться использованием электронного диска, правда, если только Вы уже расширили ОЗУ вашего компьютера до 256Кб добавлением 2х линеек 565РУ5. В этом случае Вы получаете доступ к новому дисковому устройству CP/M под названием E: , использовать которое можно точно так же, как и дисковод, помня только, что емкость этого электронного диска равна 120 Килобайтам (с учетом пространства — 2Кб — под каталог). Причем, поскольку драйвер этого диска уже находится в системе, сразу после загрузки диск E: становится доступен и туда можно скопировать все Ваши рабочие файлы. Рекомендуется сразу скопировать туда оболочку NC.COM (если Вы ее используете) и запустить ее оттуда, тогда при возврате в оболочку после запуска из нее программ время загрузки существенно сократится.

Однако при начальном старте только что включенного компьютера в электронном диске содержится «мусор» — случайная информация из ОЗУ. Чтобы инициализировать такой «сырой» электронный диск, нужно либо ввести команду CCP на диске E:

E>ERA *.*

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

Замечания
  1. При нажатии клавиши системного сброса «Reset» информация в электронном диске сохраняется и при следующей перезагрузке системы, перейдя на диск E:, Вы снова получите доступ к файлам, находившимся там на момент нажатия клавиши сброса. Но! Нужно помнить, что если у Вас установлена ORDOS версий 4.XX в ROM-диске, то по сбросу (если не удерживать нажатой клавишу), ORDOS отформатирует (запишет байт 0FFH) в начало 2-й и 3-й страниц памяти, которые как раз и используются под электронный диск. И если форматирование 2-й страницы не опасно (в начале этой страницы будет находится каталог), то запись байта 0FFH в 3-ю страницу может означать искажение информации в файле. Поэтому будьте крайне внимательны при нажатии клавиши сброса, помните о файлах в электронном диске, если, конечно, они еще будут Вам нужны после перезагрузки.
  2. Поскольку внутренний электронный диск ограничен в объеме двух страниц памяти по 60Кб, его емкости может оказаться недостаточно. Тогда Вы можете сделать себе внешний электронный диск (на любом статическом или динамическом ОЗУ с элементами регенерации) с максимальной емкостью 8Мбайт и, написав для него драйвера чтения/записи сектора, инсталлировать свой драйвер в систему на этапе холодного старта вместо драйвера внутреннего электронного диска, благо в BIOS есть такая возможность и специально зарезервировано место.

Для работы с любым внешним дисковым драйвером в BIOS есть вектора, управление на которые передается при обращении к дисковому устройству с именем E: . Этот драйвер должен размещаться в адресах с 0DA90H по 0DC8FH (то есть максимальный размер 200H) и содержать подпрограммы, аналогичные стандартным SELDSK, READ и WRITE. Адреса этих подпрограмм для передачи на них управления должны быть подставлены в вектора:

SELDSK - адрес вектора 0DA84H
READ   - адрес вектора 0DA87H
WRITE  - адрес вектора 0DA8AH

Эти подпрограммы должны брать информацию о номере дорожки и сектора из ячеек 0DA8CH и 0DA8DH соответственно, а адрес буфера обмена — из пары ячеек по адресам 0DA8EH и 0DA8FH (везде вышеприведенные адреса — абсолютные в первой странице после загрузки BIOS).

Отметим, что на ПРК «Orion-Power» (PRO) электронный диск (2Мб) является хотя и отдельным устройством (на отдельной плате), но совершенно неотъемлемым для полноценной работы.

Распределение памяти при работе OS-DOS и драйверная система

Перед описанием драйверной системы OS-DOS хотелось бы заметить, что для обеспечения совместимости с уже наработанным материалом эта система практически ничем не отличается от аналогичной, реализованной в Advanced CP/M-92 в Санкт-Петербурге А. Кузнецовым под руководством В. Чистякова. Это позволит Вам практически без ограничений использовать драйвера от версий АCP/M-92 при работе с OS-DOS V3.60 .

После загрузки OS-DOS V3.60 устанавливается следующее распределение памяти компьютера. Вся первая страница ОЗУ отводится только для самой системы — CCP, BDOS, BIOS и TPA (TRANSIENT PROGRAMM AREA — область транзитных программ пользователя). Нулевая же страница в адресах 8000H-0B3FFH используется для размещения драйверов (консоли, принтера и других). В принципе, можно для драйверов использовать всю память нулевой страницы (0-0BFFFH), но это может привести к конфликтам с некоторыми программами (например, NC.COM). Наконец, если в компьютере имеются вторая и третья дополнительные страницы ОЗУ, они используются только для внутреннего электронного диска.

Область ОЗУ в адресах 0F000H-0F3FFH имеет особое значение, так как доступна из любой страницы. Здесь в адресах с 0F000H по 0F1FFH располагается остаток расширенного экрана при использовании драйверов DRVX.COM (см. описание), далее адреса 0F200H-0F2FFH не используются и могут быть использованы программами для размещения здесь временных подпрограмм, а пространство 0F300H-0F3FFH имеет особый статус. Во-первых, здесь находятся служебные ячейки системного Монитора, а также системный стек (0F3C0H), на который BIOS временно устанавливает указатель стека при обращении к внешним драйверам. Во-вторых, здесь, с адреса 0F320H, находятся вектора переходов на точки входа драйверов, список которых приведен ниже с указанием передаваемых и возвращаемых параметров:

CONIN - ввод символа с клавиатуры без эха с ожиданием.
        Адрес: 0F320H (вначале вызывает п/п Монитора 0F803H)
        Вход: -
        Выход: А - введеный код 

CONST - опрос состояния клавиатуры.
        Адрес: 0F323H (вначале вызывает п/п Монитора 0F81BH)
        Вход: -
        Выход: А=0 - в буфере клавиатуры нет символа для ввода.
               А=0FFH - в буфере клавиатуры есть введенный символ.

Подпрограммы CONIN и CONST должны работать в стиле аппаратной клавиатуры.

CONOUT - вывод символа на экран дисплея.
         Адрес: 0F326H (вначале вызывает п/п Монитора 0F809H)
         Вход: С - код выводимиго символа
         Выход: - 

LSTST - опрос состояния принтера.
        Адрес: 0F329H (вначале установлена заглушка)
        Вход: -
        Выход: А=0 принтер не готов к печати очередного символа.
               А=0FFH - принтер готов 

LSTOUT - вывод на принтер.
         Адрес: 0F32CH (вначале установлена заглушка)
         Вход: С - код символа. Управление не возвращается, 
               пока символ не выведен.
         Выход: - 

READER - ввод символа с внешнего устройства. Программа PIP при вводе с 
         устройства RDR: получает байты с помощью именно этой подпрограммы.
         Адрес: 0F32FH (вначале установлена заглушка)
         Вход: -
         Выход: А - введенный байт. Управление не возвращается,
                пока символ не введен 

PUNCH - вывод символа на внешнее устройство. Программа PIP при выводе на 
        устройство PUN: передает байты с помощью именно этой подпрограммы.
        Адрес: 0F332H (вначале установлена заглушка)
        Вход: C - выводимый байт. Не возвращается управление,
              пока символ не выведен.
        Выход: - 

ATSTR - записать байт в другую страницу памяти.
        Адрес: 0F335H
        Вход: A - номер страницы, C - байт, HL - адрес
        Выход: - 

FRSTR - считать байт из другой страницы памяти.
        Адрес: 0F338H
        Вход: A - номер страницы, HL - адрес
        Выход: C - байт 

Все подпрограммы должны сохранять все регистры процессора (КР580), кроме PSW и тех, в которых возвращается информация. Также нужно учитывать, что BIOS при передаче управления на эти вектора не переключает страницы памяти (вызовы всегда из первой страницы), поэтому обычно управление с вектора попадает на дополнительную подпрограмму в той же области 0F300H, которая, включив нулевую страницу, вызовет драйвер для отработки соответствующих действий, а затем обратно включит первую страницу и вернет управление командой RET.

Помимо всего этого в адресах 0F300H-0F31FH находится так называемая карта размещения драйверов, которая на практике не используется, но была оставлена для сохранения совместимости с Advanced CP/M.

Цветные CP/M-программы, рассчитанные на работу в OS-DOS V3.60, могут включить цветной экран N1 (8000H-0AFFFH). Но так как это область драйверов, то при этом если драйвера загружены и необходим возврат в CP/M по горячему старту, то естественно их надо сохранять (например, в области «стандартного» экрана — 0C000H-0EFFFH). Такая цветная программа должна иметь свои драйвера (например, вывод красивым IBM-шрифтом и свой драйвер клавиатуры, обращаться к функциям Монитора для ввода/вывода можно только по адресам 0F80FH, 0F812H, 0F81BH). Можно также использовать цветные экраны N2 и N3 без каких-либо ограничений. Ясно, что цветные CP/M-программы не могут использовать экран N0 (0C000H-0EFFFH), ибо тогда экран затирает CP/M в ОЗУ первой страницы.