<?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%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90%2F%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0</id>
	<title>Радио-86РК/Радио 03-90/Драйвер оконного интерфейса - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90%2F%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0&amp;action=history"/>
	<updated>2026-05-03T23:56:26Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0&amp;diff=1167&amp;oldid=prev</id>
		<title>Panther: http://retro.h1.ru/RK86/Windows/WinIntr.html</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-90/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0&amp;diff=1167&amp;oldid=prev"/>
		<updated>2008-12-03T09:35:38Z</updated>

		<summary type="html">&lt;p&gt;http://retro.h1.ru/RK86/Windows/WinIntr.html&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Автор=Г. ШТЕФАН| Источник= http://retro.h1.ru/RK86/Windows/WinIntr.html}}&lt;br /&gt;
&lt;br /&gt;
При разработке интерактивных (диалоговых) программ&lt;br /&gt;
для персональных ЭВМ программисту приходится большое внимание уделять форме&lt;br /&gt;
и способам отображения вводимой и выводимой информации на экране дисплея, или,&lt;br /&gt;
как это принято теперь называть, «экранному интерфейсу» с конечным пользователем.&lt;br /&gt;
Организация такого интерфейса занимает иногда значительный объем готовой программы&lt;br /&gt;
и требует от программиста дополнительных усилий.&lt;br /&gt;
&lt;br /&gt;
Именно поэтому в программах, публикуемых на страницах&lt;br /&gt;
журнала «Радио», распространен в основном командный режим или, в лучшем случае,&lt;br /&gt;
диалог с пользователем в виде вопросов — ответов. Программные системы для профессиональных&lt;br /&gt;
компьютеров часто просто поражают воображение разнообразием и сложностью экранного&lt;br /&gt;
интерфейса. Современные персональные компьютеры имеют для этого богатые возможности,&lt;br /&gt;
как правило, все они позволяют воспроизводить информацию в цветном графическом&lt;br /&gt;
режиме. В качестве примера можно привести программу — калькулятор, которая изображает&lt;br /&gt;
на экране дисплея стилизованный калькулятор в натуральную величину. Операнды&lt;br /&gt;
арифметических операций, вводимые с клавиатуры, синхронно отображаются на иммитируемом&lt;br /&gt;
индикаторе калькулятора, на который затем выводится и результат. И все это в&lt;br /&gt;
цвете.&lt;br /&gt;
&lt;br /&gt;
В этой программе хорошо продуманный экранный интерфейс&lt;br /&gt;
позволяет начать работу с программой даже без ознакомления с инструкцией, так&lt;br /&gt;
как процесс вычислений практически не отличается от работы с обычным широко&lt;br /&gt;
распространенным калькулятором.&lt;br /&gt;
&lt;br /&gt;
Хорошо освоенным и широко распространенным приемом&lt;br /&gt;
стала организация на экране дисплея как — бы нескольких независимых экранов&lt;br /&gt;
различного размера, каждый такой экран, ограниченный прямоугольной рамкой, принято&lt;br /&gt;
называть окном. Окон на экране может быть несколько, и они могут перекрывать&lt;br /&gt;
друг друга. Их размеры во многих системах можно оперативно уменьшать или увеличивать&lt;br /&gt;
так, что одно окно может даже занять весь экран. В профессиональных ПЭВМ, оснащенных&lt;br /&gt;
мощными операционными системами, разные окна могут принадлежать разным программам,&lt;br /&gt;
а также самой операционной системе или же одна программа может организовать&lt;br /&gt;
и поддерживать на экране несколько окон.&lt;br /&gt;
&lt;br /&gt;
Хорошим примером многооконных систем являются&lt;br /&gt;
многооконные текстовые редакторы. Они позволяют «открыть» на экране несколько&lt;br /&gt;
окон, в каждое окно можно вывести различные фрагменты одного или нескольких&lt;br /&gt;
текстовых файлов с возможностью их редактирования.&lt;br /&gt;
&lt;br /&gt;
Конечно, не все возможности профессиональных компьютеров&lt;br /&gt;
доступны программистам, имеющим РК-86. В этом компьютере отсутствует и цвет,&lt;br /&gt;
и графика, невелик объем оперативной памяти, нет накопителя на магнитном диске,&lt;br /&gt;
но и имеющихся средств часто вполне достаточно для применения современных методов&lt;br /&gt;
программирования и оформления программ.&lt;br /&gt;
&lt;br /&gt;
Драйвер оконного интерфейса, предлагаемый вниманию&lt;br /&gt;
читателей в этой статье, достаточно прост, занимает немного места в ОЗУ, но&lt;br /&gt;
тем не менее позволяет программистам разрабатывать свои программы на БЕЙСИКе&lt;br /&gt;
или АССЕМБЛЕРе в более современном стиле.&lt;br /&gt;
&lt;br /&gt;
В качестве примера на рисунке приведен экран дисплея&lt;br /&gt;
во время выполнения диалоговой программы для изучения иностранных языков, в&lt;br /&gt;
которой весь вывод информации осуществляется через описываемый драйвер.&lt;br /&gt;
&lt;br /&gt;
Драйвер также оказывается полезен, если программа&lt;br /&gt;
для вывода данных использует весь экран. Для того чтобы вывести дополнительное&lt;br /&gt;
сообщение, предупреждение или ввести новые данные, можно в любом месте экрана&lt;br /&gt;
открыть одно или несколько окон, а затем убрать их, восстановив и старое содержимое&lt;br /&gt;
экрана и положение курсора. Такой метод используется, например, в программе&lt;br /&gt;
расчета электронных таблиц, написанной на Бейсике.&lt;br /&gt;
&lt;br /&gt;
== ФУНКЦИОНИРОВАНИЕ ДРАЙВЕРА ==&lt;br /&gt;
&lt;br /&gt;
С помощью описываемого драйвера в любой момент выполнения программы,&lt;br /&gt;
при любом заполнении экрана можно организовать на нем одно или несколько окон&lt;br /&gt;
— прямоугольных областей, ограниченных рамкой. Последнее открытое окно становится&lt;br /&gt;
активным. Область экрана, скрытая открываемым окном, сохраняется в рабочей области&lt;br /&gt;
драйвера, организованной по принципу стека. В стеке драйвера сохраняются также&lt;br /&gt;
параметры всех ранее открытых окон. При удалении активного окна с экрана восстанавливаются&lt;br /&gt;
содержимое экрана и параметры предпоследнего активного окна, если оно было. Для&lt;br /&gt;
вывода символов и текста через активное окно имеются две подпрограммы, аналогичные&lt;br /&gt;
точкам входа МОНИТОРа OF809H и OF818H. При выводе текста через подпрограммы драйвера&lt;br /&gt;
перехватываются и обрабатываются специальным образом следующие управляющие символы:&lt;br /&gt;
&lt;br /&gt;
 0DH — возврат каретки,&lt;br /&gt;
 0СH — курсор в левый верхний угол,&lt;br /&gt;
 1FH — очистка экрана.&lt;br /&gt;
&lt;br /&gt;
Они обрабатываются так, что действуют только в&lt;br /&gt;
рамках активного окна. Все остальные символы, включая управляющие, обрабатываются&lt;br /&gt;
МОНИТОРОМ стандартным образом и, естественно, могут привести к выходу за пределы&lt;br /&gt;
окна. Забота о том, чтобы длина выводимых сообщений и их число не приводили&lt;br /&gt;
при выводе к выходу за пределы окна, ложится на программиста, что вряд ли можно&lt;br /&gt;
считать существенным ограничением. Обработка «эскейп» — последовательностей&lt;br /&gt;
и функция скроллинга в драйвере отсутствуют. Эти ограничения введены в целях&lt;br /&gt;
упрощения драйвера, однако желающие могут доработать драйвер и реализовать отсутствующие&lt;br /&gt;
функции аналогично тому, как это сделано в МОНИТОРе.&lt;br /&gt;
&lt;br /&gt;
Количество открываемых окон и их размеры ограничены&lt;br /&gt;
только размерами экрана и памяти, выделенной под область сохранения драйвера.&lt;br /&gt;
Удалить в любой момент можно только активное окно. Порядок удаления окон обретен&lt;br /&gt;
порядку их открытия. При выполнении инициализации драйвера информация об открытых&lt;br /&gt;
окнах и содержимом экрана теряется и восстановить его уже не удастся.&lt;br /&gt;
&lt;br /&gt;
Текст драйвера приведен в [[/Таблица 1|таблице]], при разработке программы соблюдены принципы модульного и структурного&lt;br /&gt;
программирования, поэтому текст программы, снабженный подробным комментарием,&lt;br /&gt;
может служить пособием по программированию на Ассемблере [1], [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;
&lt;br /&gt;
* Подпрограмма RESETW служит для начальной инициализации драйвера: обнуления счетчика открытых окон и начальной установки указателя области сохранения.&lt;br /&gt;
* Подпрограмма SAVEW увеличивает счетчик открытых окон, переписывает область экрана, занимаемую окном, и параметры последнего открытого окна в область сохранения.&lt;br /&gt;
* Подпрограмма FRAMEW рисует рамку из псевдографических символов вокруг окна и активизирует окно, то есть заносит параметры открытого окна в специальные переменные драйвера.&lt;br /&gt;
* Подпрограмма WRITE выводит текст через активное окно аналогично точке входа OF818H МОНИТОРа.&lt;br /&gt;
* Подпрограмма WRITEC выводит символ через открытое окно аналогично точке входа 0F809H МОНИТОРа.&lt;br /&gt;
* Подпрограмма RESTW стирает активное окно, восстанавливает содержимое экрана, уменьшает счетчик открытых окон и активизирует предпоследнее открытое окно.&lt;br /&gt;
&lt;br /&gt;
Подпрограмма TEST не входит в состав драйвера,&lt;br /&gt;
а демонстрирует возможное использование драйвера оконного интерфейса в программах&lt;br /&gt;
на языке Ассемблера.&lt;br /&gt;
&lt;br /&gt;
На шаге STEP1 драйвер инициируется. При выполнении&lt;br /&gt;
шага STEP2 открывается первое окно размерами 5 строк на 18 столбцов (регистры&lt;br /&gt;
D и Е), включая рамку. Координаты верхнего левого угла — 5-я строка, 6-й столбец&lt;br /&gt;
— задаются в регистрах Н и L. Выполнение двух подпрограмм SAVEW и FRAME сохраняет&lt;br /&gt;
содержимое экрана и активизирует окно. Шаг STEP3 выводит в первое окно сообщение&lt;br /&gt;
TSTXT1, а шаг STEP4 организует и активизирует второе окно того же размера, частично&lt;br /&gt;
перекрывающее первое. Во второе окно также выводится текстовое сообщение.&lt;br /&gt;
&lt;br /&gt;
Пятый шаг (STEP5) стирает после нажатия на любую&lt;br /&gt;
клавишу второе окно, восстанавливает содержимое экрана и активизирует первое&lt;br /&gt;
окно.&lt;br /&gt;
&lt;br /&gt;
Шаг STEP6 стирает первое окно и полностью восстанавливает&lt;br /&gt;
экран. После очередного нажатия на любую клавишу можно повторить выполнение&lt;br /&gt;
тестовой программы.&lt;br /&gt;
&lt;br /&gt;
Для большей наглядности выполнять тестовую программу&lt;br /&gt;
целесообразно после заполнения экрана, например, по директиве МОНИТОРа D,100.&lt;br /&gt;
&lt;br /&gt;
Г. ШТЕФАН, г. Москва&lt;br /&gt;
&lt;br /&gt;
== ЛИТЕРАТУРА ==&lt;br /&gt;
&lt;br /&gt;
# Штефан Г. Г. Ассемблер: краткий курс для начинающих.— Радио, 1988, № 11, 12.&lt;br /&gt;
# Штефан Г. Г. Ассемблер: основы программирования или первые практические шаги.—Радио, 1989, № 1,2.&lt;br /&gt;
&lt;br /&gt;
Отсканировано с журнала Радио № 3 1990 г.&amp;lt;br /&amp;gt;&lt;br /&gt;
Отредактировано Лесных Ю. 2001 г.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Радио-86РК/Публикации|48]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>