<?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%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6%2F%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6</id>
	<title>Ресурсы УКНЦ/Глава 6 - История изменений</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%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6%2F%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;action=history"/>
	<updated>2026-05-03T20:20:23Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;diff=3721&amp;oldid=prev</id>
		<title>Xolod в 09:22, 20 ноября 2023</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;diff=3721&amp;oldid=prev"/>
		<updated>2023-11-20T09:22:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:22, 20 ноября 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l297&quot;&gt;Строка 297:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 297:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;- Средства экранного вывода можно разделить на жесткие и мягкие&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;- Средства экранного вывода можно разделить на жесткие и мягкие&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Категория:УКНЦ]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Xolod</name></author>
	</entry>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;diff=2347&amp;oldid=prev</id>
		<title>Nzeemin: разметка</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;diff=2347&amp;oldid=prev"/>
		<updated>2016-11-06T11:16:48Z</updated>

		<summary type="html">&lt;p&gt;разметка&lt;/p&gt;
&lt;a href=&quot;https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;amp;diff=2347&amp;amp;oldid=2340&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Nzeemin</name></author>
	</entry>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;diff=2340&amp;oldid=prev</id>
		<title>Nzeemin: для начала как есть из http://zx-pk.ru/threads/12203-quot-resursy-uknts-quot-vlada-zhigalova.html?p=887000&amp;viewfull=1#post887000</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B_%D0%A3%D0%9A%D0%9D%D0%A6/%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_6&amp;diff=2340&amp;oldid=prev"/>
		<updated>2016-11-05T13:37:49Z</updated>

		<summary type="html">&lt;p&gt;для начала как есть из http://zx-pk.ru/threads/12203-quot-resursy-uknts-quot-vlada-zhigalova.html?p=887000&amp;amp;viewfull=1#post887000&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Глава 6 Практические рекомендации&lt;br /&gt;
&lt;br /&gt;
П16 Многоэкранный вывод&lt;br /&gt;
&lt;br /&gt;
1 Как влезть в другой экран&lt;br /&gt;
2 Как создать свой экран&lt;br /&gt;
3 Использование таблицы строк&lt;br /&gt;
4 расслоение экранов (маска + УЦ)&lt;br /&gt;
&lt;br /&gt;
Теперь, разобрав по косточкам все аспекты экранного вывода, подведем итог, соединив все в практических рекомендациях. Эти рекомендации несут минимум нового и максимум полезного. Соответственно, минимум теории и максимум практики.&lt;br /&gt;
&lt;br /&gt;
16.0 Смена текущего экрана&lt;br /&gt;
&lt;br /&gt;
Под сменой текущего экрана будем понимать такие действия, после которых экранный вывод станет работать в нужном экране, предсказуемо и без проблем.&lt;br /&gt;
&lt;br /&gt;
Прежде всего необходимо сделать нужный экран видимым (например, меняя рабочий экран на служебный).&lt;br /&gt;
&lt;br /&gt;
Работа идет конечно над таблицей строк.&lt;br /&gt;
&lt;br /&gt;
Здесь все вертится вокруг ячейки (2476), которая содержит адрес продолжения таблицы строк, т.е. экрана, которое мы включим в окно между информационными строками.&lt;br /&gt;
&lt;br /&gt;
Этот адрес для служебного экрана однозначен:&lt;br /&gt;
&lt;br /&gt;
- служебный экран в окне: (2476)=4672&lt;br /&gt;
&lt;br /&gt;
Для рабочего же экрана такой однозначности нет. Причина в том, что в рабочем экране может работать рулон, и значение ячейки (2476) меняется при прокрутке экрана.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- 76 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Поэтому, перед тем как сменить рабочий экран на служебный, надо сохранить значение ячейки (2476). Затем, при возврате, эту ячейку следует восстановить.&lt;br /&gt;
&lt;br /&gt;
Что касается верхней и нижней инфо-строк, то таблицу строк здесь не нужно менять, ибо эти строки всегда присутствуют на терминале.&lt;br /&gt;
&lt;br /&gt;
Итак, чтобы менять в окне рабочий экран на служебный без проблем с возвратом обратно, надо:&lt;br /&gt;
&lt;br /&gt;
1. Сохранить значение ячеек (2476)&lt;br /&gt;
2. Записать в (2476) число 4672&lt;br /&gt;
3. При возврате восстановить старое значение ячейки (2476).&lt;br /&gt;
&lt;br /&gt;
Теперь, чтобы обеспечить вывод в этот экран, надо сменить экранную карту, записав в ячейку (23150) ее начальный адрес:&lt;br /&gt;
&lt;br /&gt;
Экран        (23150)&lt;br /&gt;
&lt;br /&gt;
Рабочий    - 22656&lt;br /&gt;
Служебный  - 22754&lt;br /&gt;
Верх. и.с. - 22560&lt;br /&gt;
Нижн. и.с. - 23052&lt;br /&gt;
&lt;br /&gt;
Однако, если нам нужен в новом экране курсор, необходимо сделать ещё некоторые мероприятия.&lt;br /&gt;
&lt;br /&gt;
А именно:&lt;br /&gt;
&lt;br /&gt;
 - Сменить содержимое ячейки (23160) - адрес позиции курсора (задать адрес 2 байта УО1 нового экрана)&lt;br /&gt;
&lt;br /&gt;
 - Обновить (из ЭК) ячейку отслеживания курсором - (23164). И ещё надо в УО1 записать цвет курсора (опять-таки из ЭК).&lt;br /&gt;
&lt;br /&gt;
 Все эти действия сделает за нас заключительная часть EMT 40 (если ее хорошо попросить). Просить следует так: в R5 пишем адрес той ЭК, которую мы делаем текущей, и вызываем подпрограмму с адреса 110210, и та все сделает в лучшем виде (в том числе запишет адрес ЭК в ячейку (23150) и загрузит из ЭК цвета точки и фона в РТ и РФ). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -- 77 --&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Действие по переносу экранного вывода в нужный экран:&lt;br /&gt;
&lt;br /&gt;
 	MOV 	#A, R5&lt;br /&gt;
 	CALL	110210&lt;br /&gt;
&lt;br /&gt;
#A - адрес начала экранной карты, которую мы делаем текущей&lt;br /&gt;
&lt;br /&gt;
При переноса экранного вывода в инфо-строки надо учесть, что в их экранных картах курсор &amp;quot;выключен&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
	(R5+72) = 0, т.е. выключено отслеживание&lt;br /&gt;
	(R5+70) = 0, т.е. цвет курсора - 0.&lt;br /&gt;
&lt;br /&gt;
Если в этих экранчиках нам нужен полноценный курсор, то , перед тем, как вызывать процедуру 110210, надо включить отслеживание, и установить приемлемый цвет курсора (например, 7):&lt;br /&gt;
&lt;br /&gt;
	MOV		#2, 72(R5)&lt;br /&gt;
	MOV		#7, 70(R5).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
16.1 - Строим свой экран&lt;br /&gt;
&lt;br /&gt;
В случае, если вас не удовлетворяют стандартные экраны УК, можно разработать свои. Разработка ведется на нескольких уровнях:&lt;br /&gt;
&lt;br /&gt;
	- экранная карта (ЭК)&lt;br /&gt;
	- таблица строк (ТС)&lt;br /&gt;
	- видео-ОЗУ (ВОЗУ).&lt;br /&gt;
&lt;br /&gt;
На рис. 16.1 показана образная схема работы экранного вывода. Стандартная часть средства экранного вывода (программа экранного вывода и спецфункции) через экранную карту работают с ВОЗУ (видеоинформацией) и с таблицей строк (отображением видеоинформации на терминал).&lt;br /&gt;
&lt;br /&gt;
Рис. 16.1 &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;
-- 78 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
О размещении видеоинформации&lt;br /&gt;
&lt;br /&gt;
Стандартные экраны используют под видео-ОЗУ 3 плана памяти общим объемом 96Кб. Причем все 96Кб активно используются системой - нет свободного места в планах. См. рис. 16.2 и табл. 16.0.&lt;br /&gt;
&lt;br /&gt;
Поэтому для новых экранов надо использовать либо планы, и таким образом отключать некоторые стандартные экраны, либо под ВОЗУ надо использовать ОЗУ ЦП + ОЗУ ПП. В этом случае работать с этой видеоинформацией можно будет и напрямую. Однако стандартные программы вывода работают с видеоинформацией только с помощью регистрового доступа. Так что простым опусканием ВОЗУ вниз вы , увы, не сможете увеличить скорость стандартного вывода.&lt;br /&gt;
&lt;br /&gt;
Табл. 16.1&lt;br /&gt;
&lt;br /&gt;
Всё же таким образом можно использовать часть ОЗУ, во многих программах не нужную:&lt;br /&gt;
&lt;br /&gt;
	- часть ОЗУ ЦП (свободную от программ)&lt;br /&gt;
	- системное ОЗУ ЦП  (8Кб)&lt;br /&gt;
	- часть системного ОЗУ ПП (&amp;lt;22Кб)&lt;br /&gt;
&lt;br /&gt;
Напомним, что ОЗУ ЦП соответствует 1- и 2-му планам ВОЗУ, ОЗУ ПП - 0-му плану (рис 1.?)&lt;br /&gt;
&lt;br /&gt;
Если к примеру использовать по ВОЗУ ~10Кб ОЗУ ПП (план 0) и ~20Кб ОЗУ ЦП (планы 1 и 2), то можно реализовать экран в 24 символьные строки в режиме 40 знакомест в строке, что весьма неплохо и вполне достаточно для большинства программ.&lt;br /&gt;
&lt;br /&gt;
Некоторые возможные комбинации размеров экранов мы представили в таблице 16.1.&lt;br /&gt;
&lt;br /&gt;
Все это справедливо для 3-планных экранов. Но если использовать расслоенные экраны можно в 3 раза увеличить их размер при то же объеме памяти. Но об этом чуть позже.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- 79 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если вы используете под ВОЗУ системное ОЗУ ЦП (адреса 160000 и выше), желательно по выходе из программы восстанавливать СОЗУ (его содержимое). Это делается с помощью подпрограммы 173252. Она просто переписывает около 5,5Кб из ПЗУ в СОЗУ ЦП.&lt;br /&gt;
&lt;br /&gt;
После использования СОЗУ ЦП под ваши нужды восстановите программы, обычно прописанные там (монитор и прочее):&lt;br /&gt;
&lt;br /&gt;
	CALL	173252&lt;br /&gt;
&lt;br /&gt;
Используя СОЗУ старайтесь не допускать в ваше программе ситуация, приводящих к переводу ЦП в режим HALT. Иначе произойдёт прерывание, вектор которого находится по адресу 160170, а его содержимое может быть непредсказуемым, если будет являться частью ВОЗУ.&lt;br /&gt;
&lt;br /&gt;
Организация таблицы строк&lt;br /&gt;
&lt;br /&gt;
Теперь быстренько вспомним зачем нужна таблица строк. А нужна она для того, чтобы отобразить информацию в ВОЗУ в определенной последовательности (построчно). Каждой строке соответствует элемент в ТС, в которой указан некий адрес ВОЗУ (адресация - регистровая). С этого адреса видеоинформация из последовательных адресов ВОЗУ, из 3-х планов будет отображаться на экране, сколько влезет в строку при данным формате.&lt;br /&gt;
&lt;br /&gt;
То есть ТС - это мостик между видеоинформацией в ВОЗУ и видеоизображением на экране.&lt;br /&gt;
&lt;br /&gt;
Опишем стандартную таблицу строк в таблице 16.2 и на рис 16.3.&lt;br /&gt;
&lt;br /&gt;
Стандартная таблица строк&lt;br /&gt;
&lt;br /&gt;
N эл-тов	Адреса в ТС		Адреса в видео-ОЗУ		Место на экране		N видеострок&lt;br /&gt;
&lt;br /&gt;
 Таблица&lt;br /&gt;
&lt;br /&gt;
-- 80 --&lt;br /&gt;
&lt;br /&gt;
Пояснение. Кроме привычных 4-х экранов в таблицу строку входят ещё несколько образований:&lt;br /&gt;
&lt;br /&gt;
 - верхняя разделительная видеострока (на экране присутствует всегда, сразу за верхней инфо-строкой).&lt;br /&gt;
 - нижняя разделительная видестрока (всегда присутствует на экране, перед нижней инфо-строкой).&lt;br /&gt;
 - верхняя и нижняя каймы служебного экрана. Окаймляет служебный экран, дополняя его до 24 символьных строк.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -- 81 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В таблице строк эти элементы указывают на адрес 177460 ВОЗУ. Вывести в эти строки ничего нельзя, поскольку отсутствует стандартная экранная карта (хотя при желании можно и такую сделать). В Системе эти строки носят не информационную, а скорее декоративную функцию.&lt;br /&gt;
&lt;br /&gt;
Кстати, этот маленький кусочек видеопамяти - 177460...177777 также можно задействовать. В режиме 20 символов в строке из него может получиться 10 полноценных видеострок. Вполне хватит на какой-нибудь крупный заголовок к служебному экрану.&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;
- адреса в ВОЗУ должны иметь постоянное приращение от строки к строке. Оно указывает в ЭК, (смещение +10).&lt;br /&gt;
&lt;br /&gt;
Графический вывод&lt;br /&gt;
&lt;br /&gt;
- элементы - по порядку (см. 1-е правило для символьного вывода). Постоянное приращение адресов ВОЗУ необязательно.&lt;br /&gt;
&lt;br /&gt;
Стандартная ТС вполне удовлетворяет этим требованиям, поэтому удобно строить свои ТС &amp;quot;по образу и подобию&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ну и наконец, сделав ТС и позаботившись о месте в ВОЗУ, составить свою экранную карту - дело легкое и даже приятное.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- 82 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
16.2 Расслоение экранов по планам&lt;br /&gt;
&lt;br /&gt;
Сочетание всего-лишь 2-х аппаратных хитростей УК позволяет делать весьма полезные вещи с экранами, как стандартными, так и нестандартными.&lt;br /&gt;
&lt;br /&gt;
Вспомним, что соответствие цвета изображения содержимому ВОЗУ указывается в регистре управления цветом (УЦ). В принципе можно сделать для каждой видеостроки свой УК. Но практичнее все же сохранить один и тот же УК для одного экрана.&lt;br /&gt;
&lt;br /&gt;
Далее, в главе 1 был описан регистр маскирования записи в планы памяти со стороны ПП. Он позволяет перекрыть запись в любой план памяти регистровым доступом (защитить любой план).&lt;br /&gt;
&lt;br /&gt;
Теперь представим, что УК позволяет видеть содержимое только одного плана, допустим, плана 0, а регистр маски запрещает запись в планы 1 и 2.&lt;br /&gt;
&lt;br /&gt;
Стандартные средства экранного вывода не трогают регистр масок. Поэтому при выше перечисленных условиях будет работать лишь план 0, а остальные будут выключены из работы и отображения.&lt;br /&gt;
&lt;br /&gt;
Те же действия с двумя остальными планами приведут к тому, что вместо одного экрана с 8-ми цветным изображением у нас будет 3 двухцветных экрана, причем цвет для каждого из 3-х экранов можно задавать свои.&lt;br /&gt;
&lt;br /&gt;
Такой подход - расслоение экранов - может быть полезен при отображении символьной или другой информации, не требующей разнообразия палитры. Хотя и тут можно извернуться одна часть экрана может иметь свою палитру, другая - свою и т.д., так что экран будет состоять из отдельных горизонтальных полос, каждая со своими 2-мя цветами.&lt;br /&gt;
&lt;br /&gt;
Можно разбить 3 плана и по-другому 2+1. Тогда мы обретем 4-х цветный экран + 2-х цветный экран. Применение такой хитрости: 2-цветный символьный экран + 4-цветные иллюстрации к тексту. &lt;br /&gt;
&lt;br /&gt;
Переключение экранов выполняется элементарно сменой УЦ и регистра маски.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- 83 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рис. 16.4 Работает лишь план 1.&lt;br /&gt;
&lt;br /&gt;
На практике это осуществляется следующим образом. УК разбит на 8 групп, каждая из которых содержит 4 бита и отвечает за определенную комбинацию в 3-х планах ВОЗУ (табл. 16.2).&lt;br /&gt;
&lt;br /&gt;
Каждая группа устанавливает свой цвет на экране и имеет формат: &lt;br /&gt;
&lt;br /&gt;
  3   2   1   0&lt;br /&gt;
+---+---+---+---+&lt;br /&gt;
| Y | R | G | B |&lt;br /&gt;
+---+---+---+---+&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы выключить 2 плана из отображения, надо, чтобы группы содержали лишь 2 возможных цвета:&lt;br /&gt;
&lt;br /&gt;
1) - цвет точки (4 группы)&lt;br /&gt;
2) - цвет фона (4 группы).&lt;br /&gt;
&lt;br /&gt;
Пусть цвет точки содержит группы, соответствующие единице в отображаемом плане. Цвет фона - группы, в которых в этом пане - 0.&lt;br /&gt;
&lt;br /&gt;
Табл. 16.4&lt;br /&gt;
&lt;br /&gt;
Отображаемый			Номера групп 									Содержимое&lt;br /&gt;
план 				Цвет точки	Цвет фона			УЦ1		УЦ2			регистра маски&lt;br /&gt;
&lt;br /&gt;
0				1,3,5,7			0,2,4,6				170360	170360		6&lt;br /&gt;
1				2,3,6,7			0,1,4,5				177400	177400		5&lt;br /&gt;
2				4,5,6,7			0,1,2,3				0		177777		3&lt;br /&gt;
&lt;br /&gt;
В таблице 16.4 даны номера групп под цвета точки и фона при одном отображаемом плане а также даны примеры содержимого УЦ:&lt;br /&gt;
&lt;br /&gt;
цвет фона - 0 (черный)&lt;br /&gt;
цвет точки - 17 (белый цвет + установленный бит Y).&lt;br /&gt;
&lt;br /&gt;
Регистр маски содержит 0 в разряде для видимого плана, и 1 в двух остальных.&lt;br /&gt;
&lt;br /&gt;
Расслоение экранов позволит вам втрое повысить полезную информационную ёмкость видеопамяти.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- 84 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
16.3 &amp;quot;Горизонтальный&amp;quot; рулон. Активная страницы.&lt;br /&gt;
&lt;br /&gt;
Стандартное переключение формата рабочего экрана подразумевает и урезание рабочих знакомест на экране. То есть в режиме 40 символов в строке вывод ведётся лишь в левой половине экрана - в видимых 40 знакоместах (рис.16.5).&lt;br /&gt;
&lt;br /&gt;
Сделать видимой остальную часть экрана можно, изменив адреса ВОЗУ в таблице строк для всех элементов рабочего экрана. Надо прибавить к адресам ВОЗУ число, равное смещению в октетах от левого края (рис 16.6).&lt;br /&gt;
&lt;br /&gt;
Это надо сделать для всех 286 элементов рабочего экрана.&lt;br /&gt;
&lt;br /&gt;
Таким образом можно добиться того, чтобы &amp;quot;окно&amp;quot; ездило по рабочему экрану вправо-влево.&lt;br /&gt;
&lt;br /&gt;
Следует однако следить чтобы окно не выходило за пределы рабочего экрана:&lt;br /&gt;
&lt;br /&gt;
delta A меньше или равно (80-F),&lt;br /&gt;
&lt;br /&gt;
здесь F - формат окна.&lt;br /&gt;
&lt;br /&gt;
Экранный вывод можно ограничить определенной областью - активной страницей.&lt;br /&gt;
&lt;br /&gt;
Напомним, что активной страницей называется область текущего экрана, внутри которой ведется экранный вывод. Левый край активной страницы имеет координату 0.&lt;br /&gt;
&lt;br /&gt;
Размер активной страницы следует указать в экранной карте:&lt;br /&gt;
&lt;br /&gt;
- ячейка (+4) - размер активной страницы&lt;br /&gt;
- ячейка (+22) - позиция левого края активной страницы (рис.16.7)&lt;br /&gt;
&lt;br /&gt;
Активная страница и &amp;quot;окно&amp;quot; это совершенно разные вещи: &amp;quot;окно&amp;quot; лишь позволяет увидеть текущий экран или его часть, а активная страница - ограничить вывод внутри определенных фиксированных рамок.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- 85 --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
16.4 Быстрое стирание окна&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;
Для стирания окна на экране надо записать в R1-R3 параметры окна, R5 должен указывать на текущую ЭК:&lt;br /&gt;
&lt;br /&gt;
 R1 - адрес ВОЗУ левого верхнего октета окна.&lt;br /&gt;
 R2 - ширина очищаемого окна (в знакоместах).&lt;br /&gt;
 R3 - высота окна (в пикселях).&lt;br /&gt;
 (R5 + 44) -  цвет закрашивания (в формате РФ).&lt;br /&gt;
&lt;br /&gt;
 CALL 113376 - вызов подпрограммы&lt;br /&gt;
&lt;br /&gt;
Этот быстрый способ используется системой при стирании экрана (СФ-14), при очищении до конца строки (СФ-13) и т.д. &lt;br /&gt;
&lt;br /&gt;
16.5 Выключение курсора&lt;br /&gt;
&lt;br /&gt;
Часто курсор оказывается не нужен на экране. В таких случаях его полезно без лишнего шума убрать.&lt;br /&gt;
&lt;br /&gt;
Делается это так:&lt;br /&gt;
&lt;br /&gt;
 MOV	A,R5	; A - адрес текущей ЭК&lt;br /&gt;
 CALL	111632&lt;br /&gt;
&lt;br /&gt;
Эта маленькая процедура отключает отслеживание курсора, а также &amp;quot;выкусывает&amp;quot; курсор прямо из таблицы строк (схема 16.8).&lt;br /&gt;
&lt;br /&gt;
Включить потом курсор можно так:&lt;br /&gt;
&lt;br /&gt;
(23164)=2.&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;
Нечто важное из П16&lt;br /&gt;
&lt;br /&gt;
- Средства экранного вывода можно разделить на жесткие и мягкие&lt;/div&gt;</summary>
		<author><name>Nzeemin</name></author>
	</entry>
</feed>