<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_01-91%2F%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%9C%D0%9E%D0%9D%D0%98%D0%A2%D0%9E%D0%A0</id>
	<title>Орион-128/Радио 01-91/Основной МОНИТОР - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_01-91%2F%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%9C%D0%9E%D0%9D%D0%98%D0%A2%D0%9E%D0%A0"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_01-91/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%9C%D0%9E%D0%9D%D0%98%D0%A2%D0%9E%D0%A0&amp;action=history"/>
	<updated>2026-05-05T04:21:35Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_01-91/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%9C%D0%9E%D0%9D%D0%98%D0%A2%D0%9E%D0%A0&amp;diff=86&amp;oldid=prev</id>
		<title>Panther: Новая: {{ДИ|Автор=В. СУГОНЯКО, В. САФРОНОВ|Источник=http://www.retro.h1.ru/Orion/MainMon/MainMon.php}}  В предыдущих статьях мы неодно...</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%9E%D1%80%D0%B8%D0%BE%D0%BD-128/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_01-91/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%9C%D0%9E%D0%9D%D0%98%D0%A2%D0%9E%D0%A0&amp;diff=86&amp;oldid=prev"/>
		<updated>2007-10-09T09:23:47Z</updated>

		<summary type="html">&lt;p&gt;Новая: {{ДИ|Автор=В. СУГОНЯКО, В. САФРОНОВ|Источник=http://www.retro.h1.ru/Orion/MainMon/MainMon.php}}  В предыдущих статьях мы неодно...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Автор=В. СУГОНЯКО, В. САФРОНОВ|Источник=http://www.retro.h1.ru/Orion/MainMon/MainMon.php}}&lt;br /&gt;
&lt;br /&gt;
В предыдущих статьях мы неоднократно подчеркивали, что программа МОНИТОР[1] (назовем ее МОНИТОР-1) предназначена, практически, только для отладочных целей при построении компьютера, а также первых (ознакомительных) шагов в его освоении. Мы надеемся, что этот этап у читателя закончился благополучно и предлагаем теперь заменить программу МОНИТОР, записанную в ППЗУ (DD22) на основной МОНИТОР (МОНИТОР-2), коды которого приведены в табл.1, а контрольные суммы блоков — в табл.2.&lt;br /&gt;
&lt;br /&gt;
Таблица 2.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000 - 00FF E853&lt;br /&gt;
0100 - 01FF C72E&lt;br /&gt;
0200 - 02FF 48CF&lt;br /&gt;
0300 - 03FF FB9B&lt;br /&gt;
0400 - 04FF 1A93&lt;br /&gt;
0500 - 05FF 0885&lt;br /&gt;
0600 - 06FF D9BE&lt;br /&gt;
0700 - 07FF C6F3 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимость такого «ступенчатого» освоения компьютера продиктована тем, что МОНИТОР-2 не имеет в своем составе никаких средств, позволяющих хотя бы приблизительно определить неисправность компьютера. На начальном этапе отладки и освоения компьютера действительно были необходимы такие операции, как просмотр и модификация ячеек памяти, возможность ручного переключения экранных режимов дисплея, проверка правильного функционирования клавиатуры, проверка канала чтения/записи на магнитофон. Именно для этих целей и был разработан МОНИТОР-1, хотя с самого начала подразумевалось, что диалог пользователь-компьютер должен осуществлять не МОНИТОР, а операционная система (ОС). МОНИТОР же при этом должен представлять собой набор драйверов, обслуживающих аппаратную часть и иметь загрузчик первоначального («холодного») запуска операционной системы при включении компьютера. Естественно, что совмещение в одном двухкилобайтном ППЗУ функций управления и набора системных драйверов (и к тому же еще знакогенератора) невозможно без значительного упрощения «МОНИТОРА».&lt;br /&gt;
&lt;br /&gt;
Теперь же наступило время разделить эти функции так, как это делается в большинстве современных систем: основное ППЗУ будет выполнять функции мощного драйвера аппаратных средств, а диалог с пользователем станет поддерживать операционная система. На низовом уровне это ОС ORDOS. Она предназначена как для профессионалов, так и для начинающих пользователей — тех, кто только входит в мир операционных систем.&lt;br /&gt;
&lt;br /&gt;
В среде ORDOS возможно решение широкого круга прикладных задач в без дисковом варианте ПРК «Орион-128».&lt;br /&gt;
&lt;br /&gt;
На более высоком уровне — ОС СР/М-80. Эта операционная система может быть адаптирована в двух вариантах: с использованием в качестве внешней памяти внутреннего квазидиска (второй страницы памяти) или накопителя на гибких магнитных дисках, правда, во втором случае необходимо еще дополнительное устройство — плата контроллера дисковода.&lt;br /&gt;
&lt;br /&gt;
Во всех случаях при работе с ОС (независимо от уровня) «МОНИТОР» должен выполнять роль (или же дополнять) BIOS (базовая система ввода-вывода), а также содержать первоначальный («холодный») загрузчик операционной системы или другой программы, поддерживающей диалог с пользователем.&lt;br /&gt;
&lt;br /&gt;
МОНИТОР-2 занимает в ПЗУ 2 Кбайта и устанавливается в ПРК вместо МОНИТОРА-1. При включении компьютера или нажатии кнопки «СБРОС» МОНИТОР-2 производит инициализацию портов, служебных ячеек, распаковку знакогенератора и другие служебные операции, а затем проверяет, подключен ли ROM-диск к порту 0F500H (ХЗ). Если он не подключен, то экран дисплея очищается и в его верхнем левом углу выводится сообщение — «ввод?», свидетельствующее о том, что МОНИТОР-2 готов к вводу программы с магнитной ленты. Считанная информация размещается по адресам, записанным на магнитной ленте. Если контрольная сумма совпадает, то управление передается в начальный адрес считанной программы, то есть производится ее самозапуск. При обнаружении ошибки считывания — сообщение «ввод?» выводится повторно: — МОНИТОР готов к повторному вводу.&lt;br /&gt;
&lt;br /&gt;
На программном уровне МОНИТОР-2 полностью совместим (снизу вверх) с программой МОНИТОР-1, то есть все программы, рассчитанные на работу с МОНИТОРОМ-1, будут работать и с МОНИТОРОМ-2, но не наоборот. Разумеется, это справедливо только в том случае, если программы пользователя обращаются корректно к стандартным подпрограммам через таблицу, расположенную в начальных адресах монитора, а также используют служебные ячейки) объявленные авторами в [1]. Добавим, что программы, которые мы предполагаем публиковать впредь будут, в основном, работать при наличии МОНИТОРА-2. Это вызвано тем, что МОНИТОР-1 (из-за упрощений) не может обеспечить их функционирование. О том, что программа может работать только с одним монитором, мы будем предупреждать читателя.&lt;br /&gt;
&lt;br /&gt;
Таблица входов в стандартные подпрограммы нового МОНИТОРА почти полностью совпадает с той, что приведена в [1], поэтому нет необходимости приводить ее полностью. Расскажем только о дополнениях и изменениях.&lt;br /&gt;
&lt;br /&gt;
Так как загрузчики ОС содержат свои необходимые драйверы для записи файлов на магнитную ленту, из таблицы исключена функция по адресу 0F827H — «запись файла (массива) на магнитофон» и вход заблокирован командой RET.&lt;br /&gt;
&lt;br /&gt;
Вход 0F821H (ранее не использовался) определен как универсальный, программно переключаемый вход в программы-драйверы пользователя. В исходном состоянии заблокирован командой RET. Использовать этот вход можно для работы с драйвером печатающего устройства, однако этим его применение не ограничивается. В дальнейшем мы расскажем, как пользоваться переключаемыми входами.&lt;br /&gt;
&lt;br /&gt;
Дополнительно появился новый вход: 0F83FH — подпрограмма генерирования звукового сигнала. Эта подпрограмма не имеет входных параметров и формирует звуковой сигнал постоянной длительности. «Высоту» сигнала можно изменять, если его значение записывать в служебную ячейку по адресу 0F3E7H.&lt;br /&gt;
&lt;br /&gt;
Особенностью построения таблицы МОНИТОРА-2 является возможность подмены некоторых внутренних драйверов периферийных устройств внешними. Такое переключение можно производить с помощью программных переключателей. Для переключения доступны драйверы клавиатуры (OF803H), дисплея (OF809H), формирователя звукового сигнала (0F83FH) и универсальный вход в программы-драйверы пользователя (0F821H).&lt;br /&gt;
&lt;br /&gt;
Пользователь может написать свой драйвер для обслуживания выше перечисленных устройств и переключить на пего управление, при этом вход в программу будет оставаться прежним, стандартным. Такое переключение на «подставной» драйвер осуществляется занесением адреса входа нового драйвера в специальную ячейку-ключ. Адреса ячеек-ключей для выше означенных драйверов следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
клавиатура — 0F3C7-0F3C8H,&lt;br /&gt;
дисплей — 0F3CD-0F3CEH,&lt;br /&gt;
формирователь звукового сигнала — 0F3C4-0F3C5H,&lt;br /&gt;
универсальный вход — 0F3CA-0F3CBH.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Приведем примеры. Допустим, вы написали свой драйвер дисплея, который выполняет другие функции, чем имеющиеся в МОНИТОРЕ-2. Желательно такой драйвер (как и все сменные драйверы) разместить в области 0А800Н — 0AFFFH. Это исключит возможные конфликты с загружаемыми командами операционной системой. Чтобы к этому драйверу можно было обращаться из программ пользователя по стандартному адресу — 0F809H, необходимо адрес входа в ваш драйвер занести в ячейки 0F3CD-0F3CEH. Естественно, теперь по адресу 0F809H внутренний драйвер монитора уже будет недоступен, поэтому для такой ситуации имеется второй вход в драйвер дисплея монитора — 0F80FH (напомним, выводимый символ находится в регистре «А»). Такой подход позволяет работать одновременно с двумя драйверами дисплея.&lt;br /&gt;
&lt;br /&gt;
Подобным образом можно поступить и с драйвером клавиатуры, подменив его, например, программой, обслуживающей джойстик и формирующей коды управления курсором. Это позволит игровые программы, работающие с клавиатурой, перевести на управление джойстиком, не меняя ничего в самой программе игры. Адрес входа в драйвер джойстика необходимо занести в ячейки 0F3CA- 0F3CBH.&lt;br /&gt;
&lt;br /&gt;
Относительно третьего драйвера мы ограничимся лишь замечанием, оставив придумывать варианты читателю. Внутренний драйвер формирования звука очень упрощен и рассчитан на обслуживание клавиатуры. Формировать с его помощью серьезные фонограммы нельзя, поэтому и предусмотрена возможность его подмены.&lt;br /&gt;
&lt;br /&gt;
Что касается универсального входа в программы-драйверы пользователя, то он не имеет специального определения в назначении и используется для служебных целей в программах, где необходимо через один вход (стандартный) обращаться к своим подпрограммам-драйверам. Переключение производится через ячейку-ключ. Возможен, например, такой вариант: вы написали драйвер вывода символа (или строки символов) на печатающее устройство, которым располагаете. Нет необходимости этот драйвер «прицеплять» к каждой прикладной программе, в том числе и к БЕЙСИКУ, РЕДАКТОРУ, АССЕМБЛЕРУ и другим программам. Достаточно разместить его в свободной области памяти (желательно 0А800- 0AFFFH) и через ячейку-ключ переключить на него управление. Теперь все программы будут обращаться к драйверу печати по одному адресу — 0F821H. Такой подход позволяет не специализировать прикладные программы под один тип принтера.&lt;br /&gt;
&lt;br /&gt;
Вернемся к драйверу дисплея. Его функциональные возможности значительно расширены. Мы уже говорили о том, что драйвер дисплея игнорирует символы с кодами 00-1FH, вернее интерпретирует их как пробел. Исключение составляют коды управления работой дисплея:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
08Н — перемещение курсора на одну позицию влево.&lt;br /&gt;
09Н — горизонтальная табуляция. Установка курсора в ближайшую позицию в строке, кратную четырем.&lt;br /&gt;
0АН — перемещение курсора вниз на одну строку в той же позиции. Если такой переход происходит в самой нижней строке, то включается режим «Скроллинг» (смещение всего изображения экрана на одну строку вверх).&lt;br /&gt;
0СН — установка курсора в левый верхний угол экрана.&lt;br /&gt;
0DH — установка курсора в первую позицию строки.&lt;br /&gt;
18Н-перемещение курсора на одну позицию вправо.&lt;br /&gt;
19Н — перемещение курсора на одну позицию вверх.&lt;br /&gt;
1АН — перемещение курсора на одну позицию вниз.&lt;br /&gt;
1FH — стирание экрана, курсор установить в верхний левый угол.&lt;br /&gt;
7FH — переключение вывода символов на экран дисплея в инверсном виде (белый фон, черные символы). Выключение — повторный ввод кода 7FH.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
МОНИТОР-2 имеет расширенный набор функций, вызываемых с помощью управляющего кода 1ВН (АР2). В программе МОНИТОР-1 эти функции отсутствуют:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1ВН+41Н — сместить курсор на одну позицию вверх.&lt;br /&gt;
1ВН+42Н — сместить курсор на одну позицию вниз.&lt;br /&gt;
1ВН+43Н — сместить курсор на одну позицию вправо.&lt;br /&gt;
1ВН+44Н — сместить курсор на одну позицию влево.&lt;br /&gt;
1ВН+45Н — стирание экрана.&lt;br /&gt;
1ВН+48Н — установить курсор в верхний левый угол.&lt;br /&gt;
1BH+4AH — стирание экрана нг, с курсора.&lt;br /&gt;
1ВН+4ВН — стирание строки правее курсора.&lt;br /&gt;
1BH+59H+(X+20H)+(Y+20H) — установить курсор в позицию Х (номер строки — 0-19Н), Y (номер позиции — 0-3FH).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Драйвер дисплея использует несколько установочных констант, которые хранятся в области служебных ячеек и поэтому доступных для оперативного изменения.&lt;br /&gt;
&lt;br /&gt;
0F3CFH — старший байт адреса начала строки. При инициализации МОНИТОР заносит значение 0С0Н (0С000Н — начальный адрес области ОЗУ экрана № 1). Если записывать промежуточные значения (0С0-0Е0Н), то будет происходить смещение начала строки вправо. Для включения экранов № 2, № 3 и № 4 заносят (помимо соответствующего кода в системный порт № 3) соответственно коды 80Н, 40Н, 00Н. Данная константа влияет на начальную позицию первого символа в строке.&lt;br /&gt;
&lt;br /&gt;
0F3D0H — ширина поля, в котором производятся операции «Скроллинг» и гашение экрана. Исходное значение З0Н, то есть 48 байт в строке (не символов). Программно сдвигая экран вправо, необходимо пропорционально укорачивать эту константу, в противном случае функции гашение экрана и «Скроллинг» будут «влезать» в служебную область МОНИТОРА (для экрана № 1) — поле знакогенератора. На длину символьной строки данная константа не влияет.&lt;br /&gt;
&lt;br /&gt;
0F3D4H — номер строки, с которой действуют функции стирания экрана, а также «Скроллинг». Отсчет ведется от верхней строки. Если в ячейку занести код 05Н, к примеру, то верхние пять строк не будут стираться по коду 1FH (или 1ВН+45Н) и не попадут под действие режима «Скроллинг». Для возврата в исходное состояние, необходимо восстановить начальное значение констант.&lt;br /&gt;
&lt;br /&gt;
Оперируя этими константами, можно оперативно защитить часть экрана от стирания и «Скроллинга», то есть без дополнительных программных средств имитировать «окно». Однако следует помнить, что изменение констант, а также переключение экранов требуют аккуратного и продуманного порядка действий. Драйвер дисплея не имеет «защиты от дурака», и установка констант, при которых «окно» выйдет за границы дисплейной области ОЗУ, скорее всего приведет к выходу программы из-под контроля.&lt;br /&gt;
&lt;br /&gt;
В заключение следует сказать, что в программе МОНИТОР-2 есть «пустые» места. Это сделано не случайно. Авторы предусмотрели возможность модификации МОНИТОРА под другие типы клавиатур, расширению функциональных возможностей драйвера ввода с магнитофона.&lt;br /&gt;
&lt;br /&gt;
В. СУГОНЯКО, В. САФРОНОВ&lt;br /&gt;
&lt;br /&gt;
Московская обл.&lt;br /&gt;
&lt;br /&gt;
ЛИТЕРАТУРА&lt;br /&gt;
&lt;br /&gt;
# Сугоняко, В. Сафронов, К. Коненков. Персональный радиолюбительский компьютер «Орион-128». Программное обеспечение. — Радио, 1990, № 2, с. 46.&lt;br /&gt;
&lt;br /&gt;
Отсканировано с журнала Радио № 1 1991 г.&lt;br /&gt;
&lt;br /&gt;
Отредактировано Лесных Ю. 2001 г.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Орион-128/Публикации|10]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>