Орион-128/Радио 04-94/Стандартизация

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

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

Автор: Г.РОГОВ, С.БУТЫЛКИН, М.БРИДЖИДИ

Источник: Архив журнала Радио

Основные требования к программному обеспечению (ПО) для «Ориона-128» были изложены в (1). К сожалению, довольно часто при разработке ПО авторы не учитывают некоторых мелочей, что делает их программы неудобными в обращении или может привести к конфликтным ситуациям при работе с другими программами Ниже перечислены основные требования (относящиеся в основном к программам, работающим под ORDOS, которыми следует руководствоваться при разработке ПО.

  1. Во избежание путаницы при обнаружении ошибок или выполнении каких-либо доработок программ необходимо указывать номер версии или дату их выпуска.
  2. Программы, осуществляющие непосредственные обращения к видео-ОЗУ, минуя подпрограммы МОНИТОРа (в основном игровые программы), должны устанавливать необходимые режимы экрана и цвета.
  3. Программы, использующие функции ОС ORDOS или выход по «горячему» старту (адрес 0BFFDH), должны учитывать распределение памяти при работе ORDOS (2). Необходимо отметить, что в области 0A000H — 0AFFFH могут размещаться различные драйверы, которые для исключения конфликтов с другими программами должны устанавливать верхнюю границу свободного ОЗУ (подпрограмма МОНИТОРа 0F833H) [3]. Область 0А800Н — 0A87FH зарезервирована для драйвера печати «LPT» [1]. Более подробно о распределении памяти при работе с ORDOS, а также о новой версии этой ОС, работающей с четырьмя страницами ОЗУ, будет рассказано в ближайших номерах журнала.
  4. Все программы, использующие цвет, должны следить за заполненностью диска В: (подпрограмма 0BFB8H) [4] для исключения возможной потерн информации.
  5. Программы должны учитывать тип клавиатуры («Радио-86РК» или МС7007)
  6. Программы должны работать как с микропроцессором КР580ВМ80, так и с Z80. Принято считать, что эти микропроцессоры полностью совместимы, и с Z80 могут работать любые программы, написанные для KP580BM80, однако это не совсем так. В работе команд из набора КР580ВМ80 на Z80 имеются два отличия. Первое заключается в том, что в Z80 флаг паритета (бит D2 регистра признаков), кроме основной функции, используется для указания переполнения, что обычно требуется при работе с числами со знаком. Второе отличие — корректное выполнение команды DAA (десятичной коррекции) после операции вычитания. При разработке программ необходимо учитывать эти особенности и не использовать команды, выполняемые КР580ВМ80 и Z80 по-разному. Для повышения эффективности работы программ с Z80 можно использовать команды, отсутствующие у КР580ВМ80, но в этом случае программа обязательно должна проверять тип микропроцессора.
    Учитывая, что стандартным для «Ориона-128» считается «Z80-Card V3.2» (вариант установки Z80, разработанный «Орион-Сервис»), а также то, что некоторые команды Z80 выполняет за меньшее, чем КР580ВМ80, число тактов, программы реального времени должны корректировать константы задержек в зависимости от типа микропроцессора. Программа, используемая для определения типа микропроцессора, приведена в табл.1.
    Подробно об установке в «Орион-128» микропроцессора Z80 планируется рассказать в одном из ближайших номеров журнала.
  7. Программы должны иметь цветное графическое оформление и содержать интерфейс пользователя, который, по возможности, обеспечивал бы выбор всех режимов работы программы и команд в режимах меню.

РАБОТА С КЛАВИАТУРОЙ

Быстрота работы любой программы, использующей ввод информации с клавиатуры, во многом зависит от способа опроса клавиатуры. Поскольку при работе подпрограммы МОНИТОРа 0F81BH [3,5], возвращающей программе пользователя код нажатой клавиши, затрачивается довольно много времени, такой способ опроса клавиатуры не всегда пригоден для использования в динамических программах.

Существенно уменьшить время, затрачиваемое программой на циклический опрос клавиатуры, можно, если вместо указанной (0F81BH) использовать подпрограмму 0F812H (опрос состояния клавиатуры), выполняющуюся менее чем за 35 мкс (что практически не сказывается на быстродействии), а при определении нажатия клавиши переходить на опрос через подпрограмму 0F81BH При бесспорной простоте такой способ имеет серьезный недостаток: если клавиши удерживать нажатыми некоторое время, работа программы будет существенно замедляться, так как много времени будет затрачиваться на выполнение подпрограммы 0F81ВН.

Подпрограммы МОНИТОРа не позволяют опрашивать несколько одновременно нажатых клавиш (будет выдаваться код только одной из них) а служебные клавиши «УС» и «СС» ( на клавиатуре от «Радио 86РК») вообще не имеют кодов и не опрашиваются в подпрограмме 0F812 Н. На клавиатуре МС7007 клавиши переключения регистров и «УПР» также не имеют кодов, но подпрограммой 0F812H опрашиваются. Именно поэтому в программах довольно часто используется непосредственный опрос клавиатуры (через порт).

К сожалению, многие программисты, забывая о существовании ПК «Орион-128» с разными клавиатурами, применяют некорректный опрос клавиатуры, из-за чего программы оказываются неработоспособными на компьютерах с другой клавиатурой. Чаще всего это происходит из-за невозможности отладки программы с различными клавиатурами из-за отсутствия их в распоряжении программиста.

Ниже приведены исходные тексты подпрограмм для непосредственного опроса клавиатуры и джойстика, подключенных по схемам, приведенным в [5—7]. которые могут с успехом использоваться при разработке различных программ. Поскольку наибольшее число пользователей «Орион-128» имеют клавиатуры от «Радио 86РК» и МС7007 [6], программы обязательно должны поддерживать работу с ними. По усмотрению разработчика, программы могут поддерживать работу с клавиатурами других типов, выбор режимов работы с которыми должен осуществляться не автоматически, а только через меню программы. Аналогично рекомендуется включать режим работы с джойстиком.

В табл.2 приведена подпрограмма инициализации, которую можно поместить в начало Вашей программы и выполнить ее одни раз после запуска. Она настраивает порты микросхемы ВВ55 для работы с джойстиком (ВА-ввод, ВВ ввод, ВС-ввод) и определяет тип клавиатуры по режиму работы порта ВА микросхемы DD53. Если порт ВА работает на ввод, это означает, что используется клавиатура МС7007 и производится коррекция подпрограммы опроса клавиатуры (изменяется адрес перехода на ее начало).

В табл.3 приведена подпрограмма опроса клавиатур от «Радио 86РК» и МС7007, а в табл.4 и 5 — подпрограммы опроса джойстиков. Результат выполнения этих подпрограмм — формирующийся в аккумуляторе микропроцессора байт, пять бит которого (DO, D4 — D7) соответствуют состоянию кнопок клавиатуры или джойстика в момент опроса (первые контакты замкнуты). В табл. 6 показано соответствие бит формируемого в аккумуляторе байта назначению клавиш, которые выбраны как наиболее часто используемые в игровых программах.

Приведенные подпрограммы сохраняют все регистры микропроцессора (кроме А), время работы всех подпрограмм одинаково благодаря введенным циклам задержек. Отметим, что в подпрограмме опроса клавиатуры МС7007 определяется состояние клавиш управления курсором, а не «4», «S», «6», «8»; как это сделано во многих играх.

Г.РОГОВ, С.БУТЫЛКИН, М.БРИДЖИДИ г. Москва

ЛИТЕРАТУРА

  1. Рогов Г., Брцджиди М. «Орион-128» -настоящее и будущее. — Радио, 1993, № 4, с. 18 - 22.
  2. Сугомко В., Сафронов В. Операционная система «ORDOS» для ПРК «Орион - 128» Радио, 1990, N? 8. с.38 - 45.
  3. Сугоняко В., Сафронов В., Коненков К. Программное обеспечение персонального радиолюбительского компьютера «Орион-128». — Радио, 1990. N? 2. с.46 - 53.
  4. Сугоняко В., Сафронов В. Операционная система ORDOS. Версия 2.4. - Радио, 1991, № 7, с.49 - 54.
  5. Сугоняко В., Сафронов В. Основной монитор для ПРК «Орион- 128». — Радио, 1991, № 1. с.35 - 38.
  6. Сугоняко В., Сафронов В. «Орион-128». Сообщаем подробности. — Радио, 1991. № 2, с. 44 - 48.
  7. РОГОВ Г., Бркджндн М. «Орион-128» -настоящее и будущее — Радио, 1993, № 4, с.19-22.