Главная Дока Микро-80 Радио-86РК ЮТ-88 Орион-128 Ссылки Новости Письмо

Описание компьютера Орион-128
Журнал РАДИО

ОСНОВНОЙ МОНИТОР для ПРК “ОРИОН-128”

В предыдущих статьях мы неоднократно подчеркивали, что программа МОНИТОР[1] (назовем ее МОНИТОР-1) предназначена, практически, только для отладочных целей при построении компьютера, а также первых (ознакомительных) шагов в его освоении. Мы надеемся, что этот этап у читателя закончился благополучно и предлагаем теперь заменить программу МОНИТОР, записанную в ППЗУ (DD22) на основной МОНИТОР (МОНИТОР-2), коды которого приведены в табл.1, а контрольные суммы блоков - в табл.2.

Таблица 2.

0000 - 00FF E853
0100 - 01FF C72E
0200 - 02FF 48CF
0300 - 03FF FB9B
0400 - 04FF 1A93
0500 - 05FF 0885
0600 - 06FF D9BE
0700 - 07FF C6F3

Необходимость такого “ступенчатого” освоения компьютера продиктована тем, что МОНИТОР-2 не имеет в своем составе никаких средств, позволяющих хотя бы приблизительно определить неисправность компьютера. На начальном этапе отладки и освоения компьютера действительно были необходимы такие операции, как просмотр и модификация ячеек памяти, возможность ручного переключения экранных режимов дисплея, проверка правильного функционирования клавиатуры, проверка канала чтения/записи на магнитофон. Именно для этих целей и был разработан МОНИТОР-1, хотя с самого начала подразумевалось, что диалог пользователь-компьютер должен осуществлять не МОНИТОР, а операционная система (ОС). МОНИТОР же при этом должен представлять собой набор драйверов, обслуживающих аппаратную часть и иметь загрузчик первоначального (“холодного”) запуска операционной системы при включении компьютера. Естественно, что совмещение в одном двухкилобайтном ППЗУ функций управления и набора системных драйверов (и к тому же еще знакогенератора) невозможно без значительного упрощения “МОНИТОРА”.

Теперь же наступило время разделить эти функции так, как это делается в большинстве современных систем: основное ППЗУ будет выполнять функции мощного драйвера аппаратных средств, а диалог с пользователем станет поддерживать операционная система. На низовом уровне это ОС ORDOS. Она предназначена как для профессионалов, так и для начинающих пользователей - тех, кто только входит в мир операционных систем.

В среде ORDOS возможно решение широкого круга прикладных задач в без дисковом варианте ПРК “Орион-128”.

На более высоком уровне - ОС СР/М-80. Эта операционная система может быть адаптирована в двух вариантах: с использованием в качестве внешней памяти внутреннего квазидиска (второй страницы памяти) или накопителя на гибких магнитных дисках, правда, во втором случае необходимо еще дополнительное устройство - плата контроллера дисковода.

Во всех случаях при работе с ОС (независимо от уровня) “МОНИТОР” должен выполнять роль (или же дополнять) BIOS (базовая система ввода-вывода), а также содержать первоначальный (“холодный”) загрузчик операционной системы или другой программы, поддерживающей диалог с пользователем.

МОНИТОР-2 занимает в ПЗУ 2 Кбайта и устанавливается в ПРК вместо МОНИТОРА-1. При включении компьютера или нажатии кнопки “СБРОС” МОНИТОР-2 производит инициализацию портов, служебных ячеек, распаковку знакогенератора и другие служебные операции, а затем проверяет, подключен ли ROM-диск к порту 0F500H (ХЗ). Если он не подключен, то экран дисплея очищается и в его верхнем левом углу выводится сообщение - “ввод?”, свидетельствующее о том, что МОНИТОР-2 готов к вводу программы с магнитной ленты. Считанная информация размещается по адресам, записанным на магнитной ленте. Если контрольная сумма совпадает, то управление передается в начальный адрес считанной программы, т. е. производится ее самозапуск. При обнаружении ошибки считывания - сообщение “ввод?” выводится повторно: - МОНИТОР готов к повторному вводу.

На программном уровне МОНИТОР-2 полностью совместим (снизу вверх) с программой МОНИТОР-1, т. е. все программы, рассчитанные на работу с МОНИТОРОМ-1, будут работать и с МОНИТОРОМ-2, но не наоборот. Разумеется, это справедливо только в том случае, если программы пользователя обращаются корректно к стандартным подпрограммам через таблицу, расположенную в начальных адресах монитора, а также используют служебные ячейки) объявленные авторами в [1]. Добавим, что программы, которые мы предполагаем публиковать впредь будут, в основном, работать при наличии МОНИТОРА-2. Это вызвано тем, что МОНИТОР-1 (из-за упрощений) не может обеспечить их функционирование. О том, что программа может работать только с одним монитором, мы будем предупреждать читателя.

Таблица входов в стандартные подпрограммы нового МОНИТОРА почти полностью совпадает с той, что приведена в [1], поэтому нет необходимости приводить ее полностью. Расскажем только о дополнениях и изменениях.

Так как загрузчики ОС содержат свои необходимые драйверы для записи файлов на магнитную ленту, из таблицы исключена функция по адресу 0F827H - “запись файла (массива) на магнитофон” и вход заблокирован командой RET.

Вход 0F821H (ранее не использовался) определен как универсальный, программно переключаемый вход в программы-драйверы пользователя. В исходном состоянии заблокирован командой RET. Использовать этот вход можно для работы с драйвером печатающего устройства, однако этим его применение не ограничивается. В дальнейшем мы расскажем, как пользоваться переключаемыми входами.

Дополнительно появился новый вход: 0F83FH - подпрограмма генерирования звукового сигнала. Эта подпрограмма не имеет входных параметров и формирует звуковой сигнал постоянной длительности. “Высоту” сигнала можно изменять, если его значение записывать в служебную ячейку по адресу 0F3E7H.

Особенностью построения таблицы МОНИТОРА-2 является возможность подмены некоторых внутренних драйверов периферийных устройств внешними. Такое переключение можно производить с помощью программных переключателей. Для переключения доступны драйверы клавиатуры (OF803H), дисплея (OF809H), формирователя звукового сигнала (0F83FH) и универсальный вход в программы-драйверы пользователя (0F821H).

Пользователь может написать свой драйвер для обслуживания выше перечисленных устройств и переключить на пего управление, при этом вход в программу будет оставаться прежним, стандартным. Такое переключение на “подставной” драйвер осуществляется занесением адреса входа нового драйвера в специальную ячейку-ключ. Адреса ячеек-ключей для выше означенных драйверов следующие:

Приведем примеры. Допустим, вы написали свой драйвер дисплея, который выполняет другие функции, чем имеющиеся в МОНИТОРЕ-2. Желательно такой драйвер (как и все сменные драйверы) разместить в области 0А800Н - 0AFFFH. Это исключит возможные конфликты с загружаемыми командами операционной системой. Чтобы к этому драйверу можно было обращаться из программ пользователя по стандартному адресу - 0F809H, необходимо адрес входа в ваш драйвер занести в ячейки 0F3CD-0F3CEH. Естественно, теперь по адресу 0F809H внутренний драйвер монитора уже будет недоступен, поэтому для такой ситуации имеется второй вход в драйвер дисплея монитора - 0F80FH (напомним, выводимый символ находится в регистре “А”). Такой подход позволяет работать одновременно с двумя драйверами дисплея.

Подобным образом можно поступить и с драйвером клавиатуры, подменив его, например, программой, обслуживающей джойстик и формирующей коды управления курсором. Это позволит игровые программы, работающие с клавиатурой, перевести на управление джойстиком, не меняя ничего в самой программе игры. Адрес входа в драйвер джойстика необходимо занести в ячейки 0F3CA- 0F3CBH.

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

Что касается универсального входа в программы-драйверы пользователя, то он не имеет специального определения в назначении и используется для служебных целей в программах, где необходимо через один вход (стандартный) обращаться к своим подпрограммам-драйверам. Переключение производится через ячейку-ключ. Возможен, например, такой вариант: вы написали драйвер вывода символа (или строки символов) на печатающее устройство, которым располагаете. Нет необходимости этот драйвер “прицеплять” к каждой прикладной программе, в том числе и к БЕЙСИКУ, РЕДАКТОРУ, АССЕМБЛЕРУ и другим программам. Достаточно разместить его в свободной области памяти (желательно 0А800- 0AFFFH) и через ячейку-ключ переключить на него управление. Теперь все программы будут обращаться к драйверу печати по одному адресу - 0F821H. Такой подход позволяет не специализировать прикладные программы под один тип принтера.

Вернемся к драйверу дисплея. Его функциональные возможности значительно расширены. Мы уже говорили о том, что драйвер дисплея игнорирует символы с кодами 00-1FH, вернее интерпретирует их как пробел. Исключение составляют коды управления работой дисплея:

МОНИТОР-2 имеет расширенный набор функций, вызываемых с помощью управляющего кода 1ВН (АР2). В программе МОНИТОР-1 эти функции отсутствуют:

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

0F3CFH - старший байт адреса начала строки. При инициализации МОНИТОР заносит значение 0С0Н (0С000Н - начальный адрес области ОЗУ экрана №1 ). Если записывать промежуточные значения (0С0-0Е0Н), то будет происходить смещение начала строки вправо. Для включения экранов №2, №3 и №4 заносят (помимо соответствующего кода в системный порт №3) соответственно коды 80Н, 40Н, 00Н. Данная константа влияет на начальную позицию первого символа в строке.

0F3D0H - ширина поля, в котором производятся операции “Скроллинг” и гашение экрана. Исходное значение З0Н, т. е. 48 байт в строке (не символов). Программно сдвигая экран вправо, необходимо пропорционально укорачивать эту константу, в противном случае функции гашение экрана и “Скроллинг” будут “влезать” в служебную область МОНИТОРА (для экрана №1) - поле знакогенератора. На длину символьной строки данная константа не влияет.

0F3D4H - номер строки, с которой действуют функции стирания экрана, а также “Скроллинг”. Отсчет ведется от верхней строки. Если в ячейку занести код 05Н, к примеру, то верхние пять строк не будут стираться по коду 1FH (или 1ВН+45Н) и не попадут под действие режима “Скроллинг”. Для возврата в исходное состояние, необходимо восстановить начальное значение констант.

Оперируя этими константами, можно оперативно защитить часть экрана от стирания и “Скроллинга”, т. е. без дополнительных программных средств имитировать “окно”. Однако следует помнить, что изменение констант, а также переключение экранов требуют аккуратного и продуманного порядка действий. Драйвер дисплея не имеет “защиты от дурака”, и установка констант, при которых “окно” выйдет за границы дисплейной области ОЗУ, скорее всего приведет к выходу программы из-под контроля.

В заключение следует сказать, что в программе МОНИТОР-2 есть “пустые” места. Это сделано не случайно. Авторы предусмотрели возможность модификации МОНИТОРА под другие типы клавиатур, расширению функциональных возможностей драйвера ввода с магнитофона.

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

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

ЛИТЕРАТУРА

Сугоняко, В. Сафронов, К. Коненков. Персональный радиолюбительский компьютер “Орион-128”. Программное обеспечение. - Радио, 1990, № 2, с. 46.

Отсканировано с журнала Радио №1 1991 г.
Отредактировано Лесных Ю. 2001 г.

Описание компьютера Орион-128
Журнал РАДИО



(C) 2003-2010 www.danbigras.ru Наш адрес: info@danbigras.ru
Всё о старых компьютерах