Ресурсы УКНЦ/Глава 3

Материал из Emuverse

Глава 3. Стандартный экранный вывод.




§ 7. Разделение экранов

Итак, мы разобрались с буфером и с Диспетчером. Рассмотрим такую рядовую ситуацию: ПП «кружит» в Диспетчере, сканируя таблицу запросов и с нетерпением ожидая задачи на исполнение.

Пусть теперь ЦП по каналу К0 послал байт (пока неважно какой). Сработает прерывание от приемника К0 со стороны ПП. Наш байт запишется в буфер, указатель буфера изменится.

Также установится ячейка (7064) в таблице запросов. Программа обработки прерывания завершается, и управление возвращается в Диспетчер. Он обнаруживает, что поступил запрос на обслуживания экрана (ячейка (7064) не равна 0) и запускает подпрограмму экранного вывода, адрес которой находит в таблице задач.

Этот адрес — 111144.

Вряд ли стоит спешить сходу описывать эту подпрограмму. Вообще-то она не очень сложная. Просто будет удобнее подойти к ней с другой стороны.

7.0. Принцип разделения экранов

Из множества хитростей, заложенных в УК разработчиками, эта, на первый взгляд, в глаза не бросается. Однако без нее УК — не УК.

Допустим, Вы работаете в Бейсике, или в пультовом отладчике, и понадобилось, например, изменить цвет символа. Что Вы делаете? Нажимаете клавишу «УСТ». Что происходит? Появляется меню «Установка режимов». Выполнив необходимые манипуляции с этим меню, Вы возвращаетесь опять в ту же среду, где находились, нажатием клавиш «ИСП» или «Ввод».

При этом никаких изменений в текущем экране Вы не находите. Даже курсор на том же месте.

Иными словами, работа в меню «Уст» не касалась Вашей программы и Вашего экрана. Эта работа велась в другом экране. Каким образом этот другой экран влез вместо основного, рабочего? Конечно же, с помощью таблицы строк. Она стала указывать на другие адреса в ВОЗУ, и, таким образом, сделала видимой видеоинформацию другой области видеопамяти.

В этом заключается принцип разделения экранов в УК. Вместо того, чтобы копировать массивы видеоинформации, сохраняя старое изображение, просто меняются несколько ячеек в таблице строк, и в результате перед Вами — новый экран.

7.1 Стандартные экраны в УК-НЦ

Поскольку таблица строк указывает на целые строки, а не на их отрезки, экраны в УК представляют собой горизонтальные «полосы» на всю ширину экрана, различной высоты и расположения на экране.

Системой поддерживаются 4 стандартных экрана (см. рис. 7.0).

Два из них можно назвать экранами лишь с натяжкой. Они представляют собой по символьной строке каждая — служебная (вверху) и информационная (внизу). Эти «экранчики» всегда присутствуют на терминале. Каждая из них содержит 40 знакомест.

Служебная строка служит для отображения текущего алфавита (РУС/ЛАТ), индикации режимов инверсии, подчеркивания, дополнительной клавиатуры (ИНВ, ПОДЧ, ДКЛ), режима индикации символов управления (ИСУ), режима «Установка режимов» (УСТ). Разработчиками предусмотрен вывод и кое-каких других надписей в верхнюю строку, но почему-то Система не использует эти возможности.

Нижняя инфо-строка в Системе вообще не используется.

Для вывода в эти строки предназначены ЕМТ 52 и ЕМТ 56. Но о них позже. Пока — на очереди еще 2 экрана.

Они выводятся в «окошко» между служебной строкой и инфо-строкой. Один — назовем его рабочим — самый главный в УК. В нем работают практически все программы пользователя.

Этот экран содержит 26 символьных строк по 80 символов максимум. Из этих 26 строк 24 всегда выводятся на экран, а две оставшиеся можно просмотреть, циклически сдвинув экран вверх или вниз с помощью команд терминала (УПР+R или УПР+V). Лишь в этом экране действует рулон, и меню «Установка режимов» меняет режимы этого экрана (меняет цвета, формат рабочего экрана, тип рулона).

И последний стандартный экран — служебный. Он содержит 20 символьных строк, максимум по 40 символов в каждой. Рулон в этом экране всегда выключен. Служебный экран используется для размещения меню «Установка режимов», а также под монитор ПП.

Входят в этот монитор так: вызывают меню «Установка» нажатием УСТ, а затем нажимают ГРАФ + ИСП или УПР + @. Работа в мониторе ПП аналогична работе в мониторе ЦП. Однако подвесить машину здесь намного легче. Выход из него в меню «Установки» выполняется нажатием УПР + C.

Каждому экрану в таблице строк соответствуют свои регистры управления цветом и отображением. Их адреса даны в таблице 7.1. Напомним, что каждый из этих регистров занимает в таблице строк 2 слова.

TODO: Таблица 7.1. Адреса регистров управления отображением и цветом для стандартных экранов.

Экран	Адр. УО	Адр. УЦ
Рабочий	2460	2470
Служебный	4670  	4700
Служебная строка (верхняя)	2370 	2400
Инфо-строка (нижняя)	6740	6750

Ячейка с адресом 2476 содержит информцию о том, какой экран - рабочий или служебный - будет отображаться в окне:

1) рабочий экран:   (2476)=2500
2) служебный экран: (2476)=4672.

7.2. Экранные карты

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

Оказывается, можно.

Вывод на экран требует размещения в ОЗУ некоторых переменных, например, цвета символа, знакоместа, текущего адреса в ВОЗУ и т.д. Чтобы разделение экранов было полным, у каждого из экранов есть своя саО H8jщiующая и т.д. Тогда обращение к переменным будет выглядеть так:

  Смещение       Ассемблер        Блок-схема
  
    10            10(R5)            (R5+10)
     2             2(R5)            (R5+2)

В таблице 7.2 приведены смещения переменных, их смысл, а также характерные значения для каждого из четырех экранов.

< Таблица 7.2    Экранные карты  >

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

TODO