Difference between revisions of "Uknc Resources chapter1"

From Felixl.com
Jump to navigationJump to search
(Пример 5. Негатив служебного экрана)
(Регистр управления отображением и аппаратный курсор)
Line 437: Line 437:
 
Этот регистр также состоит из двух слов.
 
Этот регистр также состоит из двух слов.
  
 +
'''1-е слово''' управляет видом курсора, его горизонтальной позицией на экране, а также цветом.
 +
 +
{|
 +
| style="width:15px; text-align:center;" | 15
 +
| style="width:15px; text-align:center;" | 14
 +
| style="width:15px; text-align:center;" | 13
 +
| style="width:15px; text-align:center;" | 12
 +
| style="width:15px; text-align:center;" | 11
 +
| style="width:15px; text-align:center;" | 10
 +
| style="width:15px; text-align:center;" | 9
 +
| style="width:15px; text-align:center;" | 8
 +
| style="width:15px; text-align:center;" | 7
 +
| style="width:15px; text-align:center;" | 6
 +
| style="width:15px; text-align:center;" | 5
 +
| style="width:15px; text-align:center;" | 4
 +
| style="width:15px; text-align:center;" | 3
 +
| style="width:15px; text-align:center;" | 2
 +
| style="width:15px; text-align:center;" | 1
 +
| style="width:15px; text-align:center;" | 0
 +
|-
 +
| colspan="1" style="text-align:center; background-color:#EEEEEE;" |
 +
| colspan="7" style="text-align:center; background-color:#DDDDDD;" | Позиция курсора
 +
| colspan="3" style="text-align:center; background-color:#DDDDDD;" | Поз.гр.к
 +
| colspan="1" style="text-align:center; background-color:#DDDDDD;" | тк
 +
| colspan="1" style="text-align:center; background-color:#DDDDDD;" | Y
 +
| colspan="1" style="text-align:center; background-color:#FFDDDD;" | R
 +
| colspan="1" style="text-align:center; background-color:#DDFFDD;" | G
 +
| colspan="1" style="text-align:center; background-color:#DDDDFF;" | B
 +
|}
 +
* 0-3 разряды — яркость и цвет курсора:
 +
:: 1 — есть составляющая,
 +
:: 0 — нет составляющей.
 +
* 4 разряд — тип курсора:
 +
:: 1 — графический курсор,
 +
:: 0 — символьный.
 +
* 5-7 разряды — позиция графического курсора в октете.
 +
* 8-14 разряды — позиция курсора (октета) на экране.
 +
* 15 разряд — не используется.
 +
 +
Курсор на экране формируется следующим образом. Включенный символьный курсор накладывается поверх изображения строки. Он занимает 8 подряд высвеченных точек, то есть один октет. Его позиция определяется 8-14 разрядами первого слова регистра УО. Минимальная позиция — 0, максимальная — 79. Графический курсор отличается от символьного тем, что из восьми точек октета лишь одна остается включенной. Ее положении в октете определяют 5-7 разряды. Цвет включенного курсора зависит от 0-3 разрядов.
 +
 +
: ''О включении/выключении курсора.''
 +
: В последнем слове каждого элемента таблицы строк есть разряд, который отвечает за изменение состояние курсора.
 +
: Это нулевой разряд. Если он установлен, курсор изменяет свое состояние. То есть если в предыдущих строках курсор был включен (зажжен), то начиная с этой строки он выключится, и наоборот. Изначально (по умолчанию) курсор выключен.
 +
: Найдя установленным этот бит, УВОЗУ изменяет состояние курсора и оставляет его таким в последовательных строках до следующего установленного нулевого бита последнего элемента, либо до конца строк.
 +
: Мигание курсора делается программно.
 +
 +
Не забудем и про '''2-е слово''' регистра УО. Оно отвечает за масштабирование изображения по горизонтали, а также за яркость R,G,B сигналов в текущей видеостроке.
 +
 +
Его формат:
 +
{|
 +
| style="width:15px; text-align:center;" | 15
 +
| style="width:15px; text-align:center;" | 14
 +
| style="width:15px; text-align:center;" | 13
 +
| style="width:15px; text-align:center;" | 12
 +
| style="width:15px; text-align:center;" | 11
 +
| style="width:15px; text-align:center;" | 10
 +
| style="width:15px; text-align:center;" | 9
 +
| style="width:15px; text-align:center;" | 8
 +
| style="width:15px; text-align:center;" | 7
 +
| style="width:15px; text-align:center;" | 6
 +
| style="width:15px; text-align:center;" | 5
 +
| style="width:15px; text-align:center;" | 4
 +
| style="width:15px; text-align:center;" | 3
 +
| style="width:15px; text-align:center;" | 2
 +
| style="width:15px; text-align:center;" | 1
 +
| style="width:15px; text-align:center;" | 0
 +
|-
 +
| colspan="10" style="text-align:center; background-color:#EEEEEE;" |
 +
| colspan="2" style="text-align:center; background-color:#DDDDDD;" | масш
 +
| colspan="1" style="text-align:center; background-color:#EEEEEE;" |
 +
| colspan="1" style="text-align:center; background-color:#FFDDDD;" | яR
 +
| colspan="1" style="text-align:center; background-color:#DDFFDD;" | яG
 +
| colspan="1" style="text-align:center; background-color:#DDDDFF;" | яB
 +
|}
 +
* 0-2 разряды — управляют яркостью R,G,B сигналов соответственно. Это управление распространяется лишь на текущую строку:
 +
:: 1 — 100%,
 +
:: 0 — 50%.
 +
* 3 разряд — не используется.
 +
* 4, 5 разряды управляют количеством выводимых на экран точек, то есть масштабированием (таблица 1.2).
 +
 +
'''Таблица 1.2'''<br/>
 
'''''TODO'''''
 
'''''TODO'''''
 +
 +
В УКНЦ 4 формата экрана. В режиме максимального количества точек в строке на экран отображается видеоинформация из 80 последовательных Т-слов, адрес первого указывается в таблице строк для каждой строки. Режим наименьшего количества точек в строке позволяет выводить 80 точек, то есть всего 10 Т-слов в строке. Общий размер картинки при этом не меняется. Видеоизображение занимает всегда весь экран.
 +
 +
Таблица строк позволяет для каждой строки установить свой формат. По умолчанию установлен формат 640 точек в строке. Загрузкой регистра УО можно изменить формат, тогда в последующих строках также установится новый режим, и так до строки, где вновь загрузится регистр УО (либо до конца таблицы строк).
 +
 +
===== Пример 7. Апофеоз таблицы строк. =====
 +
Этот пример следует выполнять лишь в том случае, если дальше Вы не собираетесь использовать УК с какой-либо важной целью, ибо выход из него — только системный сброс.
 +
 +
Войдите в монитор ПП, а в нем — в режим терминала (нажав D). А теперь нажмите комбинацию <УПР>+V и держите ее под треск пьезодинамика, пока не надоест.
 +
 +
То, что Вы увидите на экране, послужит, пожалуй, лучшей иллюстрацией к описанию УО и УЦ, да и всему устройству таблицы строк. Команда <УПР>+V — это комнда прокрутки рулона. Но, поскольку рулон для служебного экрана не предусмотрен, с таблицей строк происходят такие вот забавные превращения, что и отражается на экране.
  
 
==== Резюме к §1 ====
 
==== Резюме к §1 ====

Revision as of 02:13, 1 April 2007

Это глава из книги «Ресурсы УКНЦ».

Глава 1. Аппаратные средства вывода на экран


Решение некоторых сложных проблем иногда полезно начинать с конца. Поскольку вывод на экран — штука отнюдь не простая, мы именно так и сделаем. Причем концом будет у нас сам экран.

§0. Немного об экранах.

Экраном обычно служит телевизор или монитор. Оба они бывают черно-белые, цветные и выключенные. Причем последний тип легко может быть превращен в один из первых двух путем включения последнего. Если Вы уже запутались, кто первый, а кто последний, не страшно. Немного страшнее, если после подключения монитора или телевизора к компьютеру вместо удобоваримой картинки Вы обнаружите беспорядочное мерцание полос и бегание кадров с потрясной скоростью. Если предположить, что и монитор (телевизор), и ЭВМ исправны, то остается лишь разобраться с подключением одного к другому.

Обычно от компьютера к экрану идут следующие сигналы:

  • Синхросмесь (смесь строчной и кадровой разверток).
    Этот сигнал, грубо говоря, управляет положением электронного луча на экране.
  • Видеосигнал.
    Для черно-белых экранов этот сигнал управляет яркостью точки в текущем положении электронного луча. В него еще подмешано немного синхросмеси (для вкуса).
  • R, G, B.
    Сигналы управления красным (Red), зеленым (Green) и синим (Blue) составляющими цвета точки (для цветных экранов).
  • Звук.
    Тот же сигнал, что подается на пьезодинамик ЭВМ. Как правило, его подключают к телевизору в плату звукового канала.
  • Общий (земля).

Все эти сигналы выводятся на разъемы "ВМ" на задней панели компьютера. Этих разъемов у УКНЦ два. Поэтому к ней можно подключить целых два монитора. (Любопытно, что у человека тоже целых два глаза. Совпадение?)

Теперь осталось подключить компьютер. К каждой машине прилагается видеошнур. В нем 10 жил. Разводка сигналов по этим жилам такова:

СС — 10
GND — 2, 4, 6, 8
R — 5
G — 3
B — 1
Видео — 9
Звук — 7

Для передачи черно-белого изображения достаточно всего двух проводов — Видео и Земля. Для цветного требуется минимум 5: R, G, B, СС и земля.

Напряжение на выходе из компьютера в видеоразъеме - порядка 1 В.

§1. Как видеоинформация попадает на экран

1.0 Вывод картинки на экран

Рисунок 1.0 Движение электронного луча по экрану

Вы, очевидно, знаете принцип передачи теле-изображения. Электронный луч под управлением сигналов строчной и кадровой разверток обегает весь экран построчно (рисунок 1.0).

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

То, что появилось на экране, назовем видеоизображением, или просто картинкой. Картинка перерисовывается на экране 50 раз в секунду. За время, равное 1/50 секунды, часто называемое тиком, глаз не успевает забыть старое изображение, поэтому картинка не мерцает.

1.1 Создание картинки

Будем постепенно продвигаться от конца к началу. Теперь вдоль видеошнура, через разъем «ВМ» влезем в компьютер и разберемся, как формируется видеоизображение.

Среди прочих устройств УКНЦ есть устройство, отвечающее за формирование картинки. Оно называется так: Устройство Управления ВидеоОЗУ (УВОЗУ). Помимо других функций, в задачи его входит считывание видеоинформации на экран.

Видеоинформацией мы будем называть данные, хранящиеся в особо отмеченной области оперативной памяти ЭВМ, а саму эту область — ВидеоОЗУ (ВОЗУ). Чтобы разобраться в строении ВОЗУ, давайте пройдемся по адресному пространству УКНЦ.

1.2 Экскурсия в адресное пространство УКНЦ

Среди всех микро-ЭВМ, выпущенных в нашей стране, УКНЦ — самая нетривиальная. Ни в одном другом компьютере больше не встретишь такого оригинального решения — 2 ОЗУ + 2 процессора. Некоторыми вопросами, связанные с повышенной микропроцессорностью УКНЦ, мы займемся позже, а теперь же перейдем к структуре памяти.

Прямой доступ к памяти

Каждый процессор — центральный (ЦП) и периферийный (ПП) имеет свое ОЗУ. Коль скоро в машине применены процессоры КМ1801ВМ2, адресное пространство которых 64 Кб, то прямым доступом к памяти оба они берут лишь каждый свои 64 Кб.

Взгляните на рисунок 1.2. Здесь показаны карты памяти для обоих процессоров при прямом доступе.

Рисунок 1.2 Адресное пространство при прямом доступе
Рисунок 1.2 Адресное пространство при прямом доступе

Адресное пространство обоих процессоров может меняться. То есть будут меняться устройства, к которым могут они обращаться, а сам объем адресных пространств не изменится.

Устройства, «намертво» подключенные в адресное пространство, выделены (*) . К ним относятся:

в ЦП:

ОЗУ пользователя (56 Кб, адреса 0 ... 157777). Именно здесь располагаются все программы пользователя, будь то Бейсик, RT-11 или Ваши собственные (если Вы случайно не являетесь автором Бейсика или RT-11);

в ПП:

  1. ОЗУ ПП (32 Кб, адреса 0 ... 77777). Это ОЗУ используется для системных нужд. Для каких — Вы скоро узнаете. Интересно то, что около 22 Кб из этих 32 остаются свободными и также пригодны к использованию пользователем.
  2. Системное ПЗУ (банки 2-4 в адресах 120000-176777). До него нам тоже пока нет дела. Всему свой черед.
  3. Страница ввода-вывода ПП. Здесь выведены регистры внешних и внутренних устройств.

Сменные устройства:

ЦП:

В верхние адреса (160000 и выше), в зависимости от режима работы ЦП (а их два - HALT и USER) подставляются:
  • Системное ОЗУ ЦП — 8 Кб (режим HALT), где хранится программа-монитор, драйверы внешних устройств, доступных ЦП через страницу ввода-вывода, программа-эмулятор команд с плавающей точкой и программа тестирования.
  • Страница ввода-вывода ЦП (режим USER). Аналогично странице ввода-вывода ПП, сюда подставляются по фиксированным адресам регистры внешних и внутренних устройств.
Как можно менять эти режимы ЦП из ЦП же, сказано в главе ... .

ПП:

ПП в своем адресном пространстве имеет так называемое «окно» с адресами 100000-117777, в которое может подключаться:
  1. Первый банк СПЗУ;
  2. Один из трех банков ПЗУ на внешней кассете N1;
  3. Один из трех банков ПЗУ на внешней кассете N2;
  4. Вообще ничего.
Всем этим управляет особый регистр в странице ввода-вывода ПП. Его адрес — 177054.

Как видим, каждый процессор глядит напрямую только в свое адресное пространство, а общий объем ОЗУ при прямом доступе составляет:

64 + 32 = 96 Кб.
Пример 1. Прогулка по адресному пространству

Влезьте, пожалуйста, любым известным Вам способом в монитор ЦП. Уже виден значок @ ? Итак, мы на месте. Место это — адресное пространство ЦП.

Набрав любое восьмеричное число от 0 до 157776, и, нажав стрелку вправо, Вы увидите содержимое ячеек памяти с набранными адресами, а проделав то же с адресом от 160000 — сможете полюбоваться на грозные надписи «Зависание». На них не стоит обращать внимание, ибо УКНЦ как угодно может оповестить о своем зависании, но только не так. Эта часть адресного пространства ЦП — страница ввода-вывода. Здесь можно отыскать ячейки, не вызывающие при открытии никакого возмущения со стороны машины. Скорее всего, это и есть те самые регистры устройств.

Проделаем такой опыт: запишем в ячейку 177566 число 7. Машина что-то невнятно прогудит. Это значит, что число 7 попало куда следует (а следует ему попасть в канал связи с ПП). ПП обработал наш код, ответив добродушным гудком.

Тем, кому наскучило играться в мониторе ЦП, предлагаю покопаться с монитором ПП. Влезаем в него так:

  • нажимаем <УСТ>, при этом должно появиться меню «Установка режимов». Если оно не появилось, проверьте, действительно ли ЭВМ перед Вами — это УКНЦ;
  • нажмите <УПР>+@ или <ГРАФ>+<ИСП>.

Теперь мы находимся в «царстве теней» — мониторе ПП. Экран здесь не такой просторный, как в мониторе ЦП. Поэтому совет страдающим клаустрофобией — не задерживайтесь здесь подолгу! Из этого отладчика можно и не выбраться. Иногда случается находить в ОЗУ ПП останки тех, кто так и не смог выйти из лабиринтов монитора ПП. Именно их духи, мне кажется, время от времени и подвешивают машины. Но я отвлекся.

Правила игры с монитором ПП те же — можно с полным правом копаться в содержимом любых ячеек от 0 до 77776 (ОЗУ ПП) и любоваться на ячейки от 100000 до 176776 (ПЗУ). Также можно заглянуть и в страницу ввода-вывода ПП. ЭВМ же, в свою очередь, оставляет за собой право подвиснуть в любое удобное ей время.

Если вы устали, выйдите:

  • <УПР>+C,

а дальше, через меню «Установки», куда пожелаете.

Оставшимся предлагаю заглянуть туда, где доселе редко ступала нога человека — в СОЗУ ЦП. Для этого прибегнем к черной магии: наберем в ОЗУ ПП 2 масенькие программки:

	40000:	012704	MOV  #450, R4
		000450
		004737	CALL @#162164
		162164
	40020:	012704	MOV  #450, R4
		000450
		004737	CALL @#162204
		162204

С помощью первой мы включим режим просмотра ОЗУ ЦП из монитора ПП. Смело жмем 40000 <ИСП>. Вверху появляются новые две буквы: ЦМ. Что они означают, не знаю, но вот что изменилось — можно посмотреть. Теперь перед нами до боли знакомое ОЗУ ЦП пользователя (в адресах от 0 до 157776) и совсем незнакомое СОЗУ ЦП (от 160000 и выше). Лазать в ОЗУ ЦП можно по-всякому — и записывать в ячейки, и считывать. Но вот запускать программы в ЦП из монитора ПП невозможно — даже черная магия здесь бессильна.

Прежде чем выбраться из этого заколдованного места, подправим кое-что в СОЗУ ЦП:

  • в ячейку 163416 вместо 000021 запишем 012500,
  • в ячейку 163450 вместо 000031 — 010045.

Теперь со всех ног бежим в монитор ЦП: <УПР>+C, <ENTER>. Наше последнее хитрое действо дало свои результаты — теперь из монитора ЦП можно без проблем «промониторить» все ОЗУ ЦП — пользователя и системное. Это адресное пространство ЦП в режиме «HALT».

Если Вы все же соскучились по монитору ПП и по ОЗУ ПП, вернитесь в монитор ПП, и запустите вторую программку, что с адреса 40020. Ничего страшного в том, что Вы не увидите эту записанную ранее программку - ведь монитор ПП покажет эти адреса в ОЗУ ЦП. Наберите 40020, крепко зажмурьтесь, и нажмите <ИСП>. Если, открыв глаза, в верхней строке Вы обнаружите слово "ПМ", значит, эксперимент удался.

Человек быстро привыкает ко всему хорошему. Поэтому вот инструкция к тому, чтобы восстановить обычную точку зрения монитора ЦП (работаем в мониторе ЦП):

  • в ячейку 163416 обратно запишем 21,
  • в ячейку 163450 — 31.

Ну что ж, теперь мы полностью восстановили первоначальный вариант: монитор ЦП видит ОЗУ пользователя + страницу ввода-вывода, а монитор ПП — свое суверенное адресное пространство. С возвращением!

Регистровый доступ к ОЗУ

— Есть ли у вас план, мистер Фикс?
— План, план… Да у меня целых три плана!
Ж.Верн «80 дней вокруг света»

96 Кб — вроде не так уж и мало для микро-ЭВМ. Но экран — вещь, которая требует под себя значительную часть памяти машины. Поэтому в УКНЦ наряду с прямым применяется регистровый доступ к памяти.

В страницах ввода-вывода обоих процессоров есть регистры, с помощью которых можно заглянуть туда, куда с прямым доступом нам путь заказан. Делается это так.

В регистр адреса (РА), который доступен нам как ячейка в странице ввода-вывода, пишется, как Вы уже догадались, адрес. Моментально в другой регистр — данных (РД) аппаратно считывается содержимое ОЗУ, соответствующее записанному адрес. Если теперь записать в РД число, то оно аппаратно же запишется по соответствующему адресу в память. У каждой страницы ввода-вывода эти регистры свои, и каждый процессор может записывать и считывать информацию с помощью своих регистров.

Таким способом мы можем достать, помимо обычного ОЗУ, еще и дополнительное, которое выходит за пределы адресного пространства процессоров при прямом доступе. Такое дополнительное, или верхнее ОЗУ называется планами ОЗУ.

На рис. 1.3 показано адресное пространство при регистровом доступе. Планов всего 3. В каждом содержится по 32 Кб. Их адреса в РА — 100000 и выше. При РА, меньшем 100000, идет доступ к обычным ОЗУ.

TODO
Рисунок 1.3 Адресное пространство при регистровом доступе

В таблице 1.1 приведены адреса РА и РД для каждого процессора. Центральному процессору доступны через РА и РД планы 1 и 2, а также свое собственное ОЗУ. Периферийному процессору доступно все ОЗУ в машине. То есть через РД ПП может читать и записывать сразу 3 байта. Совокупность этих трех байтов в разных планах назовем Т-словом.

Таблица 1.1
TODO

Пример 2. Пример работы с регистрами РА и РД в ЦП

В прошлом примере для того, чтобы поменять кое-что в СОЗУ ЦП, нам приходилось залезать в монитор ПП. «Подглядывание» за ОЗУ ЦП оттуда осуществлялось, конечно же, с помощью регистрового доступа: ПП через регистры доступно все ОЗУ в машине. Теперь попробуем воспользоваться тем же механизмом, но в ЦП, причем более осознанно.

Предлагаю совершить такую нехитрую манипуляцию (в мониторе ЦП):

	(176640)=71607		Записываем с помощью РА и РД по адресам 
	(176642)=12500		163416 и 163450 некоторые числа. Адреса пишем
	(176640)=71624		в  РА несколько обделенными на 2.
	(176642)=10045

После этой кропотливой работы можете убедиться, что перед Вами — ОЗУ ЦП в режиме HALT, и никаких регистров по адресам 176640 и 176642 уже не наблюдается. А так как их нет, то и говорить больше не о чем. В заключение совершенно бесполезный и не относящийся к делу совет — запишите в ячейку 163731 число 77000 (вместо 71400), а в 163735 — 20077. Приятного Вам времяпрепровождения с клавишами ИСП и СТОП в мониторе ЦП!

* * *

Теперь вернемся к видеоинформации. Видеоинформация — это не что иное, как данные, хранящиеся в планах ОЗУ и считываемые построчно на экран. В принципе, три плана можно называть и ВидеоОЗУ.

Пример 3. Сохранение части экрана

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

Подпрограмма сохранения:

 	60000:	012702	MOV	#100000,R2
 		100000
 		012703	MOV	#154540,R3
 		154540
 	M1:	005004	CLR	R4
 	M2:  *	010237	MOV	R2,	@#177010
 		177010
 		013700	MOV	@#177012,R0
 		177012
 		013701	MOV	@#177014,R1
 		177014
 	     *	010337	MOV	R3,	@#177010
 		177010
 		010037	MOV	R0,	@#177012
 		177012
 		010137	MOV	R1,	@#177014
 		177014
 		005204	INC	R4
 		005202	INC	R2
 		005203	INC	R3
 		022704	CMP	#50,	R4
 		000050
 		001356	BNE	M2
 		062702	ADD	#50,	R2
 		000050
 		022703	CMP	#157700,R3
 		175700
 		100350	BPL	M1
 		000207	RETURN

Подпрограмма восстановления отличается лишь двумя словами (они отмечены звездочкой). Поэтому легче написать простенькую программу копирования, чем заново набивать нашу тяжеловесную подпрограмму.

Программа копирования:

	40040:	012702	MOV	#60000,	R2
 		060000
 		012703	MOV	#60100,	R3
 		060100
 		012701	MOV	#37,	R1
 		000037
 	M:	012223	MOV	(R2)+,	(R3)+
 		077103	SOB	M,	R1

Итак, Вы набиваете п/п, набиваете программу копирования, запускаете ее с начального адреса (40040). После этого в ОЗУ ПП появится копия подпрограммы, но уже с адреса 60100. В ней Вы меняете местами содержимое двух помеченных слов.

А для вызова этих подпрограмм используем местную хитрость — эти подпрограммы сделаем спецфункциями:

 	13144:	60000
 	13146:	60100

Теперь при посылке в терминал (то есть на экран) кода <001> (соответствует комбинации клавиш <УПР>+A) будет выполняться сохранение, а при посылке кода <002> (<УПР>+B) — восстановление левой верхней четверти рабочего экрана.

* * *

Как происходит считывание видеоинформации на экран?

Экран УКНЦ состоит из 288 видео-строк. Каждой строке ставится в соответствие адрес в ВОЗУ, с которого последовательно считывается содержимое трех планов так, что одной точке на экране соответствуют три бита в трех различных планах по одному адресу. Цвет каждой из точек строки (для цветных экранов), либо градация яркости (для черно-белых) зависит от содержимого смежных битов в ВОЗУ.

1.3 Таблица строк

Эти соответствия — номера строки начальному адресу в ВОЗУ, цвета точек содержимому ВОЗУ и кое-что другое указываются в специальной таблице в ОЗУ ПП, называемой ТАБЛИЦЕЙ СТРОК. Она строится следующим образом.

Две ячейки с фиксированными адресами в ОЗУ ПП — 270 и 272 являются первым элементом таблиц строк. Вообще количество элементов в таблице должно бы равняться 288 (количеству строк). Но УВОЗУ сделано так, что первые 20 элементов в таблице строк не указывают на строки, и считывание информации на экран начинается с 21-го.

Элемент таблицы строк всегда содержит указатель на адрес в ВОЗУ, с которого начинается вывод на экран в данной строке. Этот адрес находится в предпоследнем слове элемента (а слово — это 2 байта). Адрес здесь задается так же, как при регистровом доступе. То есть адреса, начиная со 100000, указывают на планы памяти, а меньше 100000 — на ОЗУ ЦП + ОЗУ ПП.

Последнее слово элемента содержит адрес следующего элемента таблицы строк, а также некоторую информацию о нем.

Формат последнего слова элемента:

15 3 2 1 0
Адрес следующего элемента у р к
  • 0 разряд отвечает за состояние аппаратного курсора (им мы займемся чуть позже).
  • 1 разряд определяет размер следующего элемента:
    • 1 — 4 слова.
    • 0 — 2 слова.

Элементы в таблице строк могут быть либо четырехсловными, либо двухсловными. Первый элемент (270 и 272) всегда двухсловный. Двухсловный элемент состоит из адреса в ВОЗУ (1-е слово) и указателя на следующий элемент (2-е слово).

Четырехсловный элемент в первых своих двух словах несет дополнительную информацию, 3-е и 4-е слова имеют то же назначение, что и в двухсловном элементе. Как УВОЗУ будет интерпретировать первые два слова, зависит от содержимого 2-го разряда последнего слова предыдущего элемента:

  • 2 разряд:
    1. если следующий элемент двухсловный (1-й разряд равен 0), то этот разряд интерпретируется просто как 2-й разряд адреса следующего элемента
    2. если следующий элемент все-таки четырехсловный (1-й разряд равен 1), то возможны два варианта:
      • 0 — из первых двух слов следующего элемента загружается регистр управления отображением (УО);
      • 1 — из них загружается регистр управления цветом (УЦ).
  • 3-15 разряды определяют адрес следующего элемента в таблице строк.
Пример 4. С ног на голову и наоборот

Ради развлечения и только ради него был задуман этот пример. Наберите в ОЗУ ПП такой фрагмент:

	40100:	012700	MOV	#2500,	R0
		002500
	A:	162710	SUB	#54420,	(R0)
		054420
		005410	NEG	(R0)
		062700	ADD	#4,	R0
		000004	
		020027	CMP	R0,	#4666
		004666
		100770	BMI	A
		000207	RETURN
		
	13152:	040100

Теперь при приеме терминалом кода <004> (<УПР>+D) рабочий экран перевернется вверх тормашками. Отменяется это безобразие все тем же кодом <004>.

* * *

Регистры УО и УЦ не имеют фиксированного адреса. Они могут загружаться из таблицы строк произвольное количество раз.

Регистр управления цветом

Этот регистр имеет очень важное значение. Он ставит в соответствие триаде в планах ВОЗУ (комбинации из трех бит) цвет выводимых точек, то есть является тем самым мостиком между видеоинформацией и картинкой. Младший бит в триаде соответствует содержимому плана 0, старший — плана 2.

Регистр управления цветом состоит из двух слов. В первом слове определяются цвета тех точек, которым соответствуют коды от 0 до 3 в планах ВОЗУ. Второе слово определяет цвета триад с содержимым от 4 до 7.

Формат первого слова регистра УЦ:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Y R G B Y R G B Y R G B Y R G B
011 010 001 000

Формат второго слова регистра УЦ:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Y R G B Y R G B Y R G B Y R G B
111 110 101 100

Нетрудно заметить, что каждому возможному коду в ВОЗУ (а их всего 8) соответствует комбинация из 4 бит. Три из них (R, G, B) отвечают за составляющие цвета в цветных мониторах, а черно-белых — за градацию яркости: 1 — составляющая есть, 0 — составляющей нет. Но есть и четвертый — Y. Этот управляет яркостью сразу всех цветов: 1 — 100% яркости, 0 — 50%. Хотя на протяжении одной видеостроки может быть одновременно максимум 8 цветов, в разных строках на экране их может быть 16.

Для черно-белых экранов сигнал Y не влияет на яркость изображения. Для них этот четвертый бит не имеет никакого значения.

Пример 5. Негатив служебного экрана

Чтобы не перенапрячься в изучении регистров УО и УЦ, приведу такой пример. В мониторе ПП обновим 2 ячейки в ТС:

4700:	042547
4702:	000443

Делать это следует невзирая на все безобразия, которые будут проистекать на экране. Для пущей красочности выйдите в меню «Установка»: <УПР>+C, и полюбуйтесь на результат.

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

Для того, чтобы восстановить прежнее положение, запишите в эти ячейки старые значения:

4700:	135230
4702:	177334,

или просто сбросьте машину.

Пример 6. Пылающий экран

Набейте в мониторе ПП такую программку:

	40200:	005237	INC	@#4700
		006750
		005237	INC	@#4702
		006752
		012737	MOV	#1,	@#7130
		000001
		007130
		000207	RETURN

В ячейку (7132) запишите адрес этой подпрограммки — 40200, а в ячейку (7130) — единичку. То, что происходит теперь с цветами служебного экрана, — это следствие того, что УЦ1 и УЦ2 соответствующего участка таблицы строк увеличиваются на 1 с частотой 50 Гц.

Регистр управления отображением и аппаратный курсор

Этот регистр также состоит из двух слов.

1-е слово управляет видом курсора, его горизонтальной позицией на экране, а также цветом.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Позиция курсора Поз.гр.к тк Y R G B
  • 0-3 разряды — яркость и цвет курсора:
1 — есть составляющая,
0 — нет составляющей.
  • 4 разряд — тип курсора:
1 — графический курсор,
0 — символьный.
  • 5-7 разряды — позиция графического курсора в октете.
  • 8-14 разряды — позиция курсора (октета) на экране.
  • 15 разряд — не используется.

Курсор на экране формируется следующим образом. Включенный символьный курсор накладывается поверх изображения строки. Он занимает 8 подряд высвеченных точек, то есть один октет. Его позиция определяется 8-14 разрядами первого слова регистра УО. Минимальная позиция — 0, максимальная — 79. Графический курсор отличается от символьного тем, что из восьми точек октета лишь одна остается включенной. Ее положении в октете определяют 5-7 разряды. Цвет включенного курсора зависит от 0-3 разрядов.

О включении/выключении курсора.
В последнем слове каждого элемента таблицы строк есть разряд, который отвечает за изменение состояние курсора.
Это нулевой разряд. Если он установлен, курсор изменяет свое состояние. То есть если в предыдущих строках курсор был включен (зажжен), то начиная с этой строки он выключится, и наоборот. Изначально (по умолчанию) курсор выключен.
Найдя установленным этот бит, УВОЗУ изменяет состояние курсора и оставляет его таким в последовательных строках до следующего установленного нулевого бита последнего элемента, либо до конца строк.
Мигание курсора делается программно.

Не забудем и про 2-е слово регистра УО. Оно отвечает за масштабирование изображения по горизонтали, а также за яркость R,G,B сигналов в текущей видеостроке.

Его формат:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
масш яR яG яB
  • 0-2 разряды — управляют яркостью R,G,B сигналов соответственно. Это управление распространяется лишь на текущую строку:
1 — 100%,
0 — 50%.
  • 3 разряд — не используется.
  • 4, 5 разряды управляют количеством выводимых на экран точек, то есть масштабированием (таблица 1.2).

Таблица 1.2
TODO

В УКНЦ 4 формата экрана. В режиме максимального количества точек в строке на экран отображается видеоинформация из 80 последовательных Т-слов, адрес первого указывается в таблице строк для каждой строки. Режим наименьшего количества точек в строке позволяет выводить 80 точек, то есть всего 10 Т-слов в строке. Общий размер картинки при этом не меняется. Видеоизображение занимает всегда весь экран.

Таблица строк позволяет для каждой строки установить свой формат. По умолчанию установлен формат 640 точек в строке. Загрузкой регистра УО можно изменить формат, тогда в последующих строках также установится новый режим, и так до строки, где вновь загрузится регистр УО (либо до конца таблицы строк).

Пример 7. Апофеоз таблицы строк.

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

Войдите в монитор ПП, а в нем — в режим терминала (нажав D). А теперь нажмите комбинацию <УПР>+V и держите ее под треск пьезодинамика, пока не надоест.

То, что Вы увидите на экране, послужит, пожалуй, лучшей иллюстрацией к описанию УО и УЦ, да и всему устройству таблицы строк. Команда <УПР>+V — это комнда прокрутки рулона. Но, поскольку рулон для служебного экрана не предусмотрен, с таблицей строк происходят такие вот забавные превращения, что и отражается на экране.

Резюме к §1

  • Изображение на экране УКНЦ состоит из 288 видеострок.
  • Видеоинформация на экран построчно считывается Устройством Управления ВидеоОЗУ (УВОЗУ) из видеопамяти.
  • Адресное пространство может быть доступно либо прямым доступом процессоров, либо регистровым доступом.
  • Через РА и РД (регистры адреса и данных) доступно 192 Кб ОЗУ. Одному адресу соответствует Т-слово: 3 байта из трех смежных областей, называемых планами. ЦП доступны планы 1 и 2, ПП — 0, 1 и 2, т.е. все ОЗУ в УКНЦ.
  • Одному Т-слову соответствуют восемь выведенных подряд точек на экране.
  • Адреса в РА с 100000 указывают на особую область памяти, прямым доступом не видимую. Объем ее - 96 Кб, по 32 в каждом плане, и используется она в качестве ВОЗУ. Адреса меньше 100000 — это ОЗУ ЦП +ОЗУ ПП.
  • Таблица строк — список в ОЗУ ПП, необходимый УВОЗУ для формирования видеоизображения. Начинается с пары ячеек с адресами 270 и 272.
  • Таблица строк состоит из отдельных элементов. Каждый элемент, начиная с 21-го, соответствует видеостроке на экране. 21-й элемент соответствует самой верхней строке. Элементы могут быть двухсловными и четырехсловными. Первый элемент (270 и 272) всегда двухсловный.
  • Формат двухсловного элемента:
    • 1-е слово — адрес в ВОЗУ, с которого начинается вывод видеоинформации в текущую строку.
    • 2-е слово — адрес следующего элемента в таблице строк. В трех младших битах слова содержится информация о типе следующего элемента, о переключении курсора в данной строке, а также определяется, какой регистр УВОЗУ загрузится из следующего элемента, если он — четырехсловный.
  • Формат четырехсловного элемента:
    • 1-е, 2-е слова — интерпретируются УВОЗУ либо как регистр управления отображением, либо как регистр управления цветом.
    • 3-е слово — адрес в ВОЗУ.
    • 4-е слово — адрес следующего элемента.
  • Регистры управления цветом (УЦ) и отображением (УО) состоят из двух 16-битных слов каждый и входят в состав УВОЗУ. Загружаются они лишь из таблицы строк, только из четырехсловных элементов.
  • Регистр УЦ определяет соответствие цвета точки содержимому трех битов в планах ВОЗУ. В данной строке может быть одновременно 8 цветов.
  • Регистр УО управляет: цветом, типом, горизонтальной позицией аппаратного курсора.
    • масштабированием изображения по горизонтали.
    • яркостью составляющих R,G,B в текущей строке.

§2. Формирование видеоизображения. Использование аппаратных возможностей.

TODO

§3. Каналы связи между процессорами.

TODO